// Proceed by binary search because comparison may be long. protected final int getSortedIndex(DynamicNode parentNode, DynamicNode childNode) { int lo = -1; int hi = getChildCount(parentNode); while (lo + 1 != hi) { int mid = (lo + hi) / 2; DynamicNode node = (DynamicNode) getChild(parentNode, mid); if (childNode.compareTo(node) < 0) hi = mid; else lo = mid; } return hi; }