private static boolean moveKeysLeft(VarKeyInteriorNode leftNode, VarKeyInteriorNode rightNode,
			int count) {
		if (count <= 0)
			return false;
		int leftKeyCount = leftNode.keyCount;
		int rightKeyCount = rightNode.keyCount;
		int rightOffset = rightNode.getKeyOffset(count - 1);
		int len = rightNode.buffer.length() - rightOffset;
		int leftOffset = leftNode.getKeyOffset(leftKeyCount - 1) - len;

		// Move key data to left node
		leftNode.buffer.copy(leftOffset, rightNode.buffer, rightOffset, len);

		// Move entries to left node
		int elen = count * ENTRY_SIZE;
		leftNode.buffer.copy(BASE + (leftKeyCount * ENTRY_SIZE), rightNode.buffer, BASE, elen);

		// Fix key offsets in left node
		int offsetCorrection = leftOffset - rightOffset;
		int newLeftKeyCount = leftKeyCount + count;
		for (int i = leftKeyCount; i < newLeftKeyCount; i++) {
			leftNode.putKeyOffset(i, leftNode.getKeyOffset(i) + offsetCorrection);
		}

		leftNode.setKeyCount(leftKeyCount + count);
		if (count < rightKeyCount) {
			// Only need to update right node if partial move
			rightNode.moveKeys(count, len);
			rightKeyCount -= count;
			rightNode.buffer.move(BASE + elen, BASE, rightKeyCount * ENTRY_SIZE);
			rightNode.setKeyCount(rightKeyCount);
		}
		return true;
	}
Move some or all of the keys from the right node into the left node.
If all keys are moved, the caller is responsible for deleting the right
node.
@param leftNode
@param rightNode
@param count
Ghidra/Framework/DB/src/main/java/db/VarKeyInteriorNode.java