// 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;
 }