docs: public org.fife.ui.rsyntaxtextarea.Token yylex() {
      int zzInput;
      int zzAction;
  
      // cached fields:
      int zzCurrentPosL;
      int zzMarkedPosL;
      int zzEndReadL = zzEndRead;
      char [] zzBufferL = zzBuffer;
      char [] zzCMapL = ZZ_CMAP;
  
      int [] zzTransL = ZZ_TRANS;
      int [] zzRowMapL = ZZ_ROWMAP;
      int [] zzAttrL = ZZ_ATTRIBUTE;
  
      while (true) {
        zzMarkedPosL = zzMarkedPos;
  
        zzAction = -1;
  
        zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
  
        zzState = ZZ_LEXSTATE[zzLexicalState];
  
  
        zzForAction: {
          while (true) {
  
            if (zzCurrentPosL < zzEndReadL)
              zzInput = zzBufferL[zzCurrentPosL++];
            else if (zzAtEOF) {
              zzInput = YYEOF;
              break zzForAction;
            }
            else {
              // store back cached positions
              zzCurrentPos  = zzCurrentPosL;
              zzMarkedPos   = zzMarkedPosL;
              boolean eof = zzRefill();
              // get translated positions and possibly new buffer
              zzCurrentPosL  = zzCurrentPos;
              zzMarkedPosL   = zzMarkedPos;
              zzBufferL      = zzBuffer;
              zzEndReadL     = zzEndRead;
              if (eof) {
                zzInput = YYEOF;
                break zzForAction;
              }
              zzInput = zzBufferL[zzCurrentPosL++];
            }
            int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
            if (zzNext == -1) break zzForAction;
            zzState = zzNext;
  
            int zzAttributes = zzAttrL[zzState];
            if ( (zzAttributes & 1) == 1 ) {
              zzAction = zzState;
              zzMarkedPosL = zzCurrentPosL;
              if ( (zzAttributes & 8) == 8 ) break zzForAction;
            }
  
          }
        }
  
        // store back cached position
        zzMarkedPos = zzMarkedPosL;
  
        switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
          case 1:
            { addToken(Token.IDENTIFIER); yybegin(ERROR);
            }break;
          case 2:
            { addToken(Token.RESERVED_WORD); yybegin(SEPARATOR);
            }break;
          case 3:
            { addToken(Token.IDENTIFIER);
            }break;
          case 4:
            { addToken(Token.SEPARATOR); yybegin(VALUE);
            }break;
          case 5:
            { addToken(Token.VARIABLE); yybegin(NAME);
            }break;
          case 6:
            { addToken(Token.COMMENT_DOCUMENTATION);
            }break;
          case 7:
            { addToken(Token.DATA_TYPE);
            }break;
          case 8:
          case 9:
          case 10:
          case 11:
          case 12:
          case 13:
          case 14: break;
          default:
            if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
              zzAtEOF = true;
              switch (zzLexicalState) {
              case YYINITIAL:
              case ERROR:
              case NAME:
              case SEPARATOR:
              case VALUE:
                addNullToken(); return firstToken;
              case 18:
              case 19:
              case 20:
              case 21:
              case 22: break;
              default:
              return null;
              }
            }
            else {
              zzScanError(ZZ_NO_MATCH);
            }
        }
      }
    }