private LongKeyNode balanceChild(LongKeyInteriorNode node) throws IOException {

		// Do nothing if node more than half full
		if (node.keyCount > maxKeyCount / 2) {
			return getRoot();
		}

		// balance with right sibling except if node corresponds to the right-most 
		// key within this interior node - in that case balance with left sibling.
		int index = getIdIndex(node.getKey(0));
		if (index == (keyCount - 1)) {
			return balanceChild(
				(LongKeyInteriorNode) nodeMgr.getLongKeyNode(getBufferId(index - 1)), node);
		}
		return balanceChild(node,
			(LongKeyInteriorNode) nodeMgr.getLongKeyNode(getBufferId(index + 1)));
	}
Callback method allowing a child interior node to request balancing of its 
content with its sibling nodes.  Balancing is only done if the specified node 
is half-full or less.
@param node child interior node
@return root node
Ghidra/Framework/DB/src/main/java/db/LongKeyInteriorNode.java