class_docstr: OLE2 Directory Entry
class_docstr_tok: ["OLE2","Directory","Entry"]
docstr: Read and build the red-black tree attached to this OleDirectoryEntry
  object, if it is a storage.
  Note that this method builds a tree of all subentries, so it should
  only be called for the root object once.
docstr_tok: ["Read","and","build","the","red-black","tree","attached","to","this","OleDirectoryEntry","object",",","if","it","is","a","storage",".","Note","that","this","method","builds","a","tree","of","all","subentries",",","so","it","should","only","be","called","for","the","root","object","once","."]
code: def build_storage_tree(self):
      """
      Read and build the red-black tree attached to this OleDirectoryEntry
      object, if it is a storage.
      Note that this method builds a tree of all subentries, so it should
      only be called for the root object once.
      """
      log.debug(
          "build_storage_tree: SID=%d - %s - sid_child=%d"
          % (self.sid, repr(self.name), self.sid_child)
      )
      if self.sid_child != NOSTREAM:
          # if child SID is not NOSTREAM, then this entry is a storage.
          # Let's walk through the tree of children to fill the kids list:
          self.append_kids(self.sid_child)
  
          # Note from OpenOffice documentation: the safest way is to
          # recreate the tree because some implementations may store broken
          # red-black trees...
  
          # in the OLE file, entries are sorted on (length, name).
          # for convenience, we sort them on name instead:
          # (see rich comparison methods in this class)
          self.kids.sort()
  
imports: from __future__ import print_function
  import io
  import sys
  import struct, array, os.path, datetime, logging
label_desc: Use image node_id 3 for calling the OleDirectoryEntry obj's underlying member method code with example usage: obj.build_storage_tree() without return types