code: public static boolean isJavaIdentifierStart(int codePoint) {
          // Use precomputed bitmasks to optimize the ASCII range.
          if (codePoint < 64) {
              return (codePoint == '$'); // There's only one character in this range.
          } else if (codePoint < 128) {
              return (0x7fffffe87fffffeL & (1L << (codePoint - 64))) != 0;
          }
          return ((1 << getType(codePoint))
                  & ((1 << UPPERCASE_LETTER)
                     | (1 << LOWERCASE_LETTER)
                     | (1  << TITLECASE_LETTER)
                     | (1  << MODIFIER_LETTER)
                     | (1  << OTHER_LETTER)
                     | (1  << CURRENCY_SYMBOL)
                     | (1  << CONNECTOR_PUNCTUATION)
                     | (1  << LETTER_NUMBER))) != 0;
      }
docs: Determines if the character (Unicode code point) is
  permissible as the first character in a Java identifier.
  <p>
  A character may start a Java identifier if and only if
  one of the following conditions is true:
  <ul>
  <li> {@link #isLetter(int) isLetter(codePoint)}
  returns {@code true}
  <li> {@link #getType(int) getType(codePoint)}
  returns {@code LETTER_NUMBER}
  <li> the referenced character is a currency symbol (such as {@code '$'})
  <li> the referenced character is a connecting punctuation character
  (such as {@code '_'}).
  </ul>
  
  @param   codePoint the character (Unicode code point) to be tested.
  @return  {@code true} if the character may start a Java identifier;
  {@code false} otherwise.
  @see     Character#isJavaIdentifierPart(int)
  @see     Character#isLetter(int)
  @see     Character#isUnicodeIdentifierStart(int)
  @see     javax.lang.model.SourceVersion#isIdentifier(CharSequence)
  @since   1.5