protected NR doChooseSubtree(int dstLevel, NS bounds) {
		// CS1
		NR node = root;

		// CS2
		for (int i = 0; i < dstLevel; i++) {
			assert !node.getType().isLeaf();
			if (node.getType().isLeafParent()) {
				node = findChildByNearlyMinimumOverlapCost(node, bounds);
			}
			else {
				assert node.getType().isDirectory();
				node = findChildByMinimumEnlargementCost(node, bounds);
			}
			// CS3 (by virtue of setting node, and the while loop
		}
		return node;
	}
The ChooseSubtree algorithm as defined in Section 4.1 of the paper.

@param dstLevel the level of the node to choose
@param bounds the bounds of the object being inserted
@return the leaf node into which the object should be inserted
Ghidra/Debug/ProposedUtils/src/main/java/ghidra/util/database/spatial/AbstractRStarConstraintsTree.java