code: private final int findCodePoint(int c) {
          /* Examples:
                                             findCodePoint(c)
             set              list[]         c=0 1 3 4 7 8
             ===              ==============   ===========
             []               [110000]         0 0 0 0 0 0
             [\u0000-\u0003]  [0, 4, 110000]   1 1 1 2 2 2
             [\u0004-\u0007]  [4, 8, 110000]   0 0 0 1 1 2
             [:all:]          [0, 110000]      1 1 1 1 1 1
           */
  
          // Return the smallest i such that c < list[i].  Assume
          // list[len - 1] == HIGH and that c is legal (0..HIGH-1).
          if (c < list[0]) return 0;
          // High runner test.  c is often after the last range, so an
          // initial check for this condition pays off.
          if (len >= 2 && c >= list[len-2]) return len-1;
          int lo = 0;
          int hi = len - 1;
          // invariant: c >= list[lo]
          // invariant: c < list[hi]
          for (;;) {
              int i = (lo + hi) >>> 1;
          if (i == lo) return hi;
          if (c < list[i]) {
              hi = i;
          } else {
              lo = i;
          }
          }
      }
docs: Returns the smallest value i such that c < list[i].  Caller
  must ensure that c is a legal value or this method will enter
  an infinite loop.  This method performs a binary search.
  @param c a character in the range MIN_VALUE..MAX_VALUE
  inclusive
  @return the smallest integer i in the range 0..len-1,
  inclusive, such that c < list[i]