code: def listdir_dict(self, path = None):
          
  
          if path is None:
              path = self.root
  
          root = self.find(path)
          if root is None:
              raise ValueError("unable to find dir: %s" % str(path))
  
          if not root.isdir():
              raise ValueError("can only list storage types")
  
          children = self.children_cache.get(root.dir_id, None)
          if children is not None:
              return children
  
          child = root.child()
  
          result = {}
          if not child:
              self.children_cache[root.dir_id] = result
              return result
  
          dir_per_sector = self.sector_size // 128
          max_dirs_entries = self.dir_sector_count * dir_per_sector
  
          stack =  deque([child])
          count = 0
  
          while stack:
              current = stack.pop()
              result[current.name] = current
              count += 1
  
              if count > max_dirs_entries:
                  raise CompoundFileBinaryError("corrupt folder structure")
  
              left = current.left()
              if left:
                  stack.append(left)
              right =  current.right()
              if right:
                  stack.append(right)
  
          self.children_cache[root.dir_id] = result
          return result
docs: Return a dict containing the ``DirEntry`` objects in the directory
          given by path with name of the dir as key.