code: func (n *Node) splitAt(i int) (interface{}, *Node) {
  	if n.IsLeaf {
  		return n.splitLeafAt(i)
  	}
  
  	return n.splitInternalAt(i)
  }
docs: // splitAt breaks this node into two parts and conceptually
  // returns the left part