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 = (int)((uint)(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;}