docs: public static JavaToken.Category getCategory(int kind) {
          switch (kind) {
              case RULE:
                  return JavaToken.Category.KEYWORD;
              case WINDOWS_EOL:
              case UNIX_EOL:
              case OLD_MAC_EOL:
                  return JavaToken.Category.EOL;
              case EOF:
              case SPACE:
              case CTRL_Z:
                  return JavaToken.Category.WHITESPACE_NO_EOL;
              case SINGLE_LINE_COMMENT:
              case JAVADOC_COMMENT:
              case MULTI_LINE_COMMENT:
                  return JavaToken.Category.COMMENT;
              case ABSTRACT:
              case ASSERT:
              case BOOLEAN:
              case BREAK:
              case BYTE:
              case CASE:
              case CATCH:
              case CHAR:
              case CLASS:
              case CONST:
              case CONTINUE:
              case _DEFAULT:
              case DO:
              case DOUBLE:
              case ELSE:
              case EXTENDS:
              case FALSE:
              case FINAL:
              case FINALLY:
              case FLOAT:
              case FOR:
              case GOTO:
              case IF:
              case IMPLEMENTS:
              case IMPORT:
              case INSTANCEOF:
              case INT:
              case INTERFACE:
              case LONG:
              case NATIVE:
              case NEW:
              case NULL:
              case PACKAGE:
              case PRIVATE:
              case PROTECTED:
              case PUBLIC:
              case RETURN:
              case SHORT:
              case STATIC:
              case STRICTFP:
              case SUPER:
              case SWITCH:
              case SYNCHRONIZED:
              case THIS:
              case THROW:
              case THROWS:
              case TRANSIENT:
              case TRUE:
              case TRY:
              case VOID:
              case VOLATILE:
              case WHILE:
              case REQUIRES:
              case TO:
              case WITH:
              case OPEN:
              case OPENS:
              case USES:
              case MODULE:
              case EXPORTS:
              case PROVIDES:
              case TRANSITIVE:
                  return JavaToken.Category.KEYWORD;
              case LONG_LITERAL:
              case INTEGER_LITERAL:
              case DECIMAL_LITERAL:
              case HEX_LITERAL:
              case OCTAL_LITERAL:
              case BINARY_LITERAL:
              case FLOATING_POINT_LITERAL:
              case DECIMAL_FLOATING_POINT_LITERAL:
              case DECIMAL_EXPONENT:
              case HEXADECIMAL_FLOATING_POINT_LITERAL:
              case HEXADECIMAL_EXPONENT:
              case CHARACTER_LITERAL:
              case STRING_LITERAL:
              case MILLISECOND_LITERAL:
              case SECOND_LITERAL:
              case MINUTE_LITERAL:
              case HOUR_LITERAL:
              case BIG_INTEGER_LITERAL:
              case BIG_DECIMAL_LITERAL:
                  return JavaToken.Category.LITERAL;
              case IDENTIFIER:
                  return JavaToken.Category.IDENTIFIER;
              case LPAREN:
              case RPAREN:
              case LBRACE:
              case RBRACE:
              case LBRACKET:
              case RBRACKET:
              case SEMICOLON:
              case COMMA:
              case DOT:
              case AT:
                  return JavaToken.Category.SEPARATOR;
              case MVEL_STARTS_WITH:
              case MVEL_ENDS_WITH:
              case MVEL_LENGTH:
              case NOT:
              case 150:
              case 151:
              case 149:
              // The following are tokens that are only used internally by the lexer
              case ASSIGN:
              case LT:
              case BANG:
              case TILDE:
              case HOOK:
              case COLON:
              case EQ:
              case LE:
              case GE:
              case NE:
              case SC_OR:
              case SC_AND:
              case INCR:
              case DECR:
              case PLUS:
              case MINUS:
              case STAR:
              case SLASH:
              case BIT_AND:
              case BIT_OR:
              case XOR:
              case REM:
              case LSHIFT:
              case PLUSASSIGN:
              case MINUSASSIGN:
              case STARASSIGN:
              case SLASHASSIGN:
              case ANDASSIGN:
              case ORASSIGN:
              case XORASSIGN:
              case REMASSIGN:
              case LSHIFTASSIGN:
              case RSIGNEDSHIFTASSIGN:
              case RUNSIGNEDSHIFTASSIGN:
              case ELLIPSIS:
              case ARROW:
              case DOUBLECOLON:
              case RUNSIGNEDSHIFT:
              case RSIGNEDSHIFT:
              case GT:
                  return JavaToken.Category.OPERATOR;
              // These are DRLX tokens, They don't have the constants generated
              case ENTER_JAVADOC_COMMENT:
              case ENTER_MULTILINE_COMMENT:
              case COMMENT_CONTENT:
              case HEX_DIGITS:
              case LETTER:
              case UNICODE_ESCAPE:
              case PART_LETTER:
              default:
                  throw new AssertionError("Invalid token kind " + kind);
          }
      }