code: def filetree(self):
          
          tree = {}   # Complete directory tree
          prefix = []
          paths = (f.split(os.sep) for f in self.files)
          for path in paths:
              dirpath = path[:-1]  # Path without filename
              filename = path[-1]
              subtree = tree
              for item in dirpath:
                  if item not in subtree:
                      subtree[item] = {}
                  subtree = subtree[item]
              subtree[filename] = None
          return tree
docs: :attr:`files` as a dictionary tree
  
          Each node is a ``dict`` that maps directory/file names to child nodes.
          Each child node is a ``dict`` for directories and ``None`` for files.
  
          If :attr:`path` is ``None``, this is an empty ``dict``.