code: func (t *Tr) iterativeFind(value interface{}, id ID) (*path, error) {
  	if len(id) == 0 { // can't find a matching node
  		return nil, nil
  	}
  
  	path := &path{}
  	var n *Node
  	var err error
  	var i int
  	var key *Key
  
  	for {
  		n, err = t.contextOrCachedNode(id, t.mutable)
  		if err != nil {
  			return nil, err
  		}
  
  		key, i = n.searchKey(t.config.Comparator, value)
  
  		pb := &pathBundle{i: i, n: n}
  		path.append(pb)
  		if n.IsLeaf {
  			return path, nil
  		}
  		id = key.ID()
  	}
  
  	return path, nil
  }
docs: // iterativeFind searches for the node with the provided value.  This
  // is an iterative function and returns an error if there was a problem
  // with persistence.