if (ch == '\uFEFF') return SPECIALS;  int low = 0; int hi = sets.length - 1; while (low <= hi) { int mid = (low + hi) >> 1; UnicodeBlock b = sets[mid]; if (ch < b.start) hi = mid - 1; else if (ch > b.end) low = mid + 1; else return b; } return null;
return of((int) ch);
    public static UnicodeBlock of(char ch)    {      // Special case, since SPECIALS contains two ranges.      if (ch == '\uFEFF')        return SPECIALS;      // Simple binary search for the correct block.      int low = 0;      int hi = sets.length - 1;      while (low <= hi)        {          int mid = (low + hi) >> 1;          UnicodeBlock b = sets[mid];          if (ch < b.start)            hi = mid - 1;          else if (ch > b.end)            low = mid + 1;          else            return b;        }      return null;    }