code: func (f *Folder) list(prefix string, maxDepth, curDepth int) []string {
  	out := make([]string, 0, 10)
  	if maxDepth > 0 && curDepth > maxDepth {
  		return out
  	}
  
  	if !f.Root {
  		if prefix != "" {
  			prefix += sep
  		}
  		prefix += f.Name
  	}
  	for _, key := range sortedFolders(f.Folders) {
  		out = append(out, f.Folders[key].list(prefix, maxDepth, curDepth+1)...)
  	}
  	for _, key := range sortedFiles(f.Files) {
  		out = append(out, path.Join(prefix, f.Files[key].Name))
  	}
  	return out
  }
docs: // list returns a flattened list of all sub entries with their full path
  // in the tree, e.g. foo/bar/baz