code: func (t *Tree) FindEntry(path string) (*TreeEntry, error) {
  	if t.t == nil {
  		t.t = make(map[string]*Tree)
  	}
  
  	pathParts := strings.Split(path, "/")
  	startingTree := t
  	pathCurrent := ""
  
  	// search for the longest path in the tree path cache
  	for i := len(pathParts) - 1; i > 1; i-- {
  		path := filepath.Join(pathParts[:i]...)
  
  		tree, ok := t.t[path]
  		if ok {
  			startingTree = tree
  			pathParts = pathParts[i:]
  			pathCurrent = path
  
  			break
  		}
  	}
  
  	var tree *Tree
  	var err error
  	for tree = startingTree; len(pathParts) > 1; pathParts = pathParts[1:] {
  		if tree, err = tree.dir(pathParts[0]); err != nil {
  			return nil, err
  		}
  
  		pathCurrent = filepath.Join(pathCurrent, pathParts[0])
  		t.t[pathCurrent] = tree
  	}
  
  	return tree.entry(pathParts[0])
  }
docs: // FindEntry search a TreeEntry in this tree or any subtree.