code: func (n *Node) searchKey(comparator Comparator, value interface{}) (*Key, int) {
  	i := n.search(comparator, value)
  
  	if n.IsLeaf && i == len(n.ChildValues) { // not found
  		return nil, i
  	}
  
  	if n.IsLeaf { // equal number of ids and values
  		return n.ChildKeys[i], i
  	}
  
  	if i == len(n.ChildValues) { // we need to go to the farthest node to the write
  		return n.ChildKeys[len(n.ChildKeys)-1], i
  	}
  
  	return n.ChildKeys[i], i
  }
docs: // searchKey returns the key associated with the provided value.  If the
  // provided value is greater than the highest value in this node and this
  // node is an internal node, this method returns the last ID and an index
  // equal to lenValues.