code: public static char caseCanonicalize(char ch) {
      if (ch < 0x80) {  // Normal case.
        return ('A' <= ch && ch <= 'Z') ? (char) (ch | 32) : ch;
      }
      // Non-ASCII case.
      if (CASE_SENSITIVE.contains(ch)) {
        for (DeltaSet ds : CANON_DELTA_SETS) {
          if (ds.codeUnits.contains(ch)) {
            return (char) (ch - ds.delta);
          }
        }
      }
      return ch;
    }
docs: Returns the case canonical version of the given code-unit.  ECMAScript 5
  explicitly says that code-units are to be treated as their code-point
  equivalent, even surrogates.