code: func (n *Node) insert(comparator Comparator, key *Key) *Key {
  	var overwrittenKey *Key
  	i := n.search(comparator, key.Value)
  	if i == len(n.ChildValues) {
  		n.ChildValues = append(n.ChildValues, key.Value)
  	} else {
  		if n.ChildValues[i] == key.Value {
  			overwrittenKey = n.ChildKeys[i]
  			n.ChildKeys[i] = key
  			return overwrittenKey
  		} else {
  			n.ChildValues = append(n.ChildValues, 0)
  			copy(n.ChildValues[i+1:], n.ChildValues[i:])
  			n.ChildValues[i] = key.Value
  		}
  	}
  
  	if n.IsLeaf && i == len(n.ChildKeys) {
  		n.ChildKeys = append(n.ChildKeys, key)
  	} else {
  		n.ChildKeys = append(n.ChildKeys, nil)
  		copy(n.ChildKeys[i+1:], n.ChildKeys[i:])
  		n.ChildKeys[i] = key
  	}
  
  	return overwrittenKey
  }
docs: // insert adds the provided key to this node and returns any ID that has
  // been overwritten.  This method should only be called on leaf nodes.