code: protected final int getCodePointOffset(int ch)
      {
          // if ((ch >> 16) == 0) slower
          if (ch < 0) {
              return -1;
          } else if (ch < UTF16.LEAD_SURROGATE_MIN_VALUE) {
              // fastpath for the part of the BMP below surrogates (D800) where getRawOffset() works
              return getRawOffset(0, (char)ch);
          } else if (ch < UTF16.SUPPLEMENTARY_MIN_VALUE) {
              // BMP codepoint
              return getBMPOffset((char)ch);
          } else if (ch <= UCharacter.MAX_VALUE) {
              // look at the construction of supplementary characters
              // trail forms the ends of it.
              return getSurrogateOffset(UTF16.getLeadSurrogate(ch),
                                        (char)(ch & SURROGATE_MASK_));
          } else {
              // return -1 if there is an error, in this case we return
              return -1;
          }
      }
docs: Internal trie getter from a code point.
  Could be faster(?) but longer with
  if((c32)<=0xd7ff) { (result)=_TRIE_GET_RAW(trie, data, 0, c32); }
  Gets the offset to data which the codepoint points to
  @param ch codepoint
  @return offset to data