code: func (t *treeNoder) Children() ([]noder.Noder, error) {
  	if t.mode != filemode.Dir {
  		return noder.NoChildren, nil
  	}
  
  	// children are memoized for efficiency
  	if t.children != nil {
  		return t.children, nil
  	}
  
  	// the parent of the returned children will be ourself as a tree if
  	// we are a not the root treenoder.  The root is special as it
  	// is is own parent.
  	parent := t.parent
  	if !t.isRoot() {
  		var err error
  		if parent, err = t.parent.Tree(t.name); err != nil {
  			return nil, err
  		}
  	}
  
  	return transformChildren(parent)
  }
docs: // Children will return the children of a treenoder as treenoders,
  // building them from the children of the wrapped git tree.