code: func (a *API) BuildDirectoryTree(ctx context.Context, mhash string, nameresolver bool) (addr storage.Address, manifestEntryMap map[string]*manifestTrieEntry, err error) {
  
  	uri, err := Parse("bzz:/" + mhash)
  	if err != nil {
  		return nil, nil, err
  	}
  	addr, err = a.Resolve(ctx, uri.Addr)
  	if err != nil {
  		return nil, nil, err
  	}
  
  	quitC := make(chan bool)
  	rootTrie, err := loadManifest(ctx, a.fileStore, addr, quitC, NOOPDecrypt)
  	if err != nil {
  		return nil, nil, fmt.Errorf("can't load manifest %v: %v", addr.String(), err)
  	}
  
  	manifestEntryMap = map[string]*manifestTrieEntry{}
  	err = rootTrie.listWithPrefix(uri.Path, quitC, func(entry *manifestTrieEntry, suffix string) {
  		manifestEntryMap[suffix] = entry
  	})
  
  	if err != nil {
  		return nil, nil, fmt.Errorf("list with prefix failed %v: %v", addr.String(), err)
  	}
  	return addr, manifestEntryMap, nil
  }
docs: // BuildDirectoryTree used by swarmfs_unix