private LongKeyNode split(long newKey, int newId) throws IOException {

		// Create new interior node
		LongKeyInteriorNode newNode = new LongKeyInteriorNode(nodeMgr);

		moveKeysRight(this, newNode, keyCount / 2);

		// Insert new key/id
		long rightKey = newNode.getKey(0);
		if (newKey < rightKey) {
			insert(newId, newKey);
		}
		else {
			newNode.insert(newId, newKey);
		}

		if (parent != null) {
			// Ask parent to insert new node and return root
			return parent.insert(newNode.getBufferId(), rightKey);
		}

		// New parent node becomes root
		return new LongKeyInteriorNode(nodeMgr, getKey(0), buffer.getId(), rightKey,
			newNode.getBufferId());
	}
Split this interior node and insert new child entry (key and buffer ID).  
Assumes 3 or more child keys exist in this node.
@param newKey new child key 
@param newId new child node's buffer ID
@return root node.
@throws IOException thrown if IO error occurs
Ghidra/Framework/DB/src/main/java/db/LongKeyInteriorNode.java