text: public static int subIndex(int n, int[] docStarts) { int size = docStarts.length;int lo = 0; int hi = size - 1; while (hi >= lo) {int mid = (lo + hi) >>> 1;int midValue = docStarts[mid];if (n < midValue)hi = mid - 1;else if (n > midValue)lo = mid + 1;else { while (mid + 1 < size && docStarts[mid + 1] == midValue) {mid++; }return mid;}}return hi;}