protected NR findChildByNearlyMinimumOverlapCost(NR n, NS bounds) {
		assert n.getType().isLeafParent();
		PriorityQueue<LeastAreaEnlargementThenLeastArea> sorted =
			new PriorityQueue<>(n.getChildCount());
		List<NR> children = new ArrayList<>(getNodeChildrenOf(n));
		for (NR leaf : children) {
			assert leaf.getType().isLeaf();
			sorted.offer(new LeastAreaEnlargementThenLeastArea(leaf, bounds));
		}
		NR bestLeaf = null;
		double bestOverlapEnlargement = 0;
		double bestAreaEnlargement = 0;
		for (int i = 0; i < CHEAT_OVERLAP_COUNT; i++) {
			LeastAreaEnlargementThenLeastArea measure = sorted.poll();
			if (measure == null) {
				break;
			}
			double candidateOverlap =
				computeOverlap(measure.node.getShape(), children, measure.node);
			double candidateOverlapEnlargement =
				computeOverlap(measure.node.getShape().unionBounds(bounds), children,
					measure.node) - candidateOverlap;
			if (bestLeaf == null || candidateOverlapEnlargement < bestOverlapEnlargement ||
				(candidateOverlapEnlargement == bestOverlapEnlargement &&
					measure.areaEnlargement < bestAreaEnlargement)) {
				bestLeaf = measure.node;
				bestOverlapEnlargement = candidateOverlapEnlargement;
				bestAreaEnlargement = measure.areaEnlargement;
			}
		}
		assert bestLeaf != null;
		return bestLeaf;
	}
For ChooseSubtree, the part which chooses a leaf node using the <em>nearly</em> minimum
overlap enlargement cost as defined in Section 4.1 of the paper, at the bottom of page 325.

<p>
Ties are resolved using the minimum area enlargement cost.

@param n the node whose children are leaf nodes
@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