code: func (n *node) insert(item Item, maxItems int) Item {
  	i, found := n.items.find(item)
  	if found {
  		out := n.items[i]
  		n.items[i] = item
  		return out
  	}
  	if len(n.children) == 0 {
  		n.items.insertAt(i, item)
  		return nil
  	}
  	if n.maybeSplitChild(i, maxItems) {
  		inTree := n.items[i]
  		switch {
  		case item.Less(inTree):
  			// no change, we want first split node
  		case inTree.Less(item):
  			i++ // we want second split node
  		default:
  			out := n.items[i]
  			n.items[i] = item
  			return out
  		}
  	}
  	return n.mutableChild(i).insert(item, maxItems)
  }
docs: // insert inserts an item into the subtree rooted at this node, making sure
  // no nodes in the subtree exceed maxItems items.  Should an equivalent item be
  // be found/replaced by insert, it will be returned.