class org.antlr.v4.Tool$1UndefChecker extends org.antlr.v4.parse.GrammarTreeVisitor
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.antlr.v4.Tool$1UndefChecker
  super_class: org.antlr.v4.parse.GrammarTreeVisitor
{
  public boolean badref;
    descriptor: Z
    flags: (0x0001) ACC_PUBLIC

  final org.antlr.v4.Tool this$0;
    descriptor: Lorg/antlr/v4/Tool;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private final org.antlr.v4.tool.Grammar val$g;
    descriptor: Lorg/antlr/v4/tool/Grammar;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  private final java.util.Map val$ruleToAST;
    descriptor: Ljava/util/Map;
    flags: (0x1012) ACC_PRIVATE, ACC_FINAL, ACC_SYNTHETIC

  void <init>(org.antlr.v4.Tool, org.antlr.v4.tool.Grammar, java.util.Map);
    descriptor: (Lorg/antlr/v4/Tool;Lorg/antlr/v4/tool/Grammar;Ljava/util/Map;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=4
        start local 0 // org.antlr.v4.Tool$1UndefChecker this
         0: .line 453
            aload 0 /* this */
            aload 1
            putfield org.antlr.v4.Tool$1UndefChecker.this$0:Lorg/antlr/v4/Tool;
            aload 0 /* this */
            aload 2
            putfield org.antlr.v4.Tool$1UndefChecker.val$g:Lorg/antlr/v4/tool/Grammar;
            aload 0 /* this */
            aload 3
            putfield org.antlr.v4.Tool$1UndefChecker.val$ruleToAST:Ljava/util/Map;
            aload 0 /* this */
            invokespecial org.antlr.v4.parse.GrammarTreeVisitor.<init>:()V
         1: .line 454
            aload 0 /* this */
            iconst_0
            putfield org.antlr.v4.Tool$1UndefChecker.badref:Z
         2: .line 453
            return
        end local 0 // org.antlr.v4.Tool$1UndefChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/antlr/v4/Tool$1UndefChecker;
    MethodParameters:
               Name  Flags
      this$0         final
      val$g          final
      val$ruleToAST  final

  public void tokenRef(org.antlr.v4.tool.ast.TerminalAST);
    descriptor: (Lorg/antlr/v4/tool/ast/TerminalAST;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.antlr.v4.Tool$1UndefChecker this
        start local 1 // org.antlr.v4.tool.ast.TerminalAST ref
         0: .line 457
            ldc "EOF"
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.TerminalAST.getText:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 459
            return
         2: .line 462
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.val$g:Lorg/antlr/v4/tool/Grammar;
            invokevirtual org.antlr.v4.tool.Grammar.isLexer:()Z
            ifeq 3
            aload 0 /* this */
            aload 1 /* ref */
            aconst_null
            invokevirtual org.antlr.v4.Tool$1UndefChecker.ruleRef:(Lorg/antlr/v4/tool/ast/GrammarAST;Lorg/antlr/v4/tool/ast/ActionAST;)V
         3: .line 463
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.antlr.v4.tool.ast.TerminalAST ref
        end local 0 // org.antlr.v4.Tool$1UndefChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/antlr/v4/Tool$1UndefChecker;
            0    4     1   ref  Lorg/antlr/v4/tool/ast/TerminalAST;
    MethodParameters:
      Name  Flags
      ref   

  public void ruleRef(org.antlr.v4.tool.ast.GrammarAST, org.antlr.v4.tool.ast.ActionAST);
    descriptor: (Lorg/antlr/v4/tool/ast/GrammarAST;Lorg/antlr/v4/tool/ast/ActionAST;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // org.antlr.v4.Tool$1UndefChecker this
        start local 1 // org.antlr.v4.tool.ast.GrammarAST ref
        start local 2 // org.antlr.v4.tool.ast.ActionAST arg
         0: .line 467
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.val$ruleToAST:Ljava/util/Map;
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getText:()Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.antlr.v4.tool.ast.RuleAST
            astore 3 /* ruleAST */
        start local 3 // org.antlr.v4.tool.ast.RuleAST ruleAST
         1: .line 468
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getToken:()Lorg/antlr/runtime/Token;
            invokeinterface org.antlr.runtime.Token.getInputStream:()Lorg/antlr/runtime/CharStream;
            invokeinterface org.antlr.runtime.CharStream.getSourceName:()Ljava/lang/String;
            astore 4 /* fileName */
        start local 4 // java.lang.String fileName
         2: .line 469
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.currentRuleName:Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.isUpperCase:(C)Z
            ifeq 9
         3: .line 470
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getText:()Ljava/lang/String;
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            invokestatic java.lang.Character.isLowerCase:(C)Z
            ifeq 9
         4: .line 472
            aload 0 /* this */
            iconst_1
            putfield org.antlr.v4.Tool$1UndefChecker.badref:Z
         5: .line 473
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.this$0:Lorg/antlr/v4/Tool;
            getfield org.antlr.v4.Tool.errMgr:Lorg/antlr/v4/tool/ErrorManager;
            getstatic org.antlr.v4.tool.ErrorType.PARSER_RULE_REF_IN_LEXER_RULE:Lorg/antlr/v4/tool/ErrorType;
         6: .line 474
            aload 4 /* fileName */
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getToken:()Lorg/antlr/runtime/Token;
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getText:()Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.currentRuleName:Ljava/lang/String;
            aastore
         7: .line 473
            invokevirtual org.antlr.v4.tool.ErrorManager.grammarError:(Lorg/antlr/v4/tool/ErrorType;Ljava/lang/String;Lorg/antlr/runtime/Token;[Ljava/lang/Object;)V
         8: .line 475
            goto 14
         9: .line 476
      StackMap locals: org.antlr.v4.tool.ast.RuleAST java.lang.String
      StackMap stack:
            aload 3 /* ruleAST */
            ifnonnull 14
        10: .line 477
            aload 0 /* this */
            iconst_1
            putfield org.antlr.v4.Tool$1UndefChecker.badref:Z
        11: .line 478
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.this$0:Lorg/antlr/v4/Tool;
            getfield org.antlr.v4.Tool.errMgr:Lorg/antlr/v4/tool/ErrorManager;
            getstatic org.antlr.v4.tool.ErrorType.UNDEFINED_RULE_REF:Lorg/antlr/v4/tool/ErrorType;
        12: .line 479
            aload 4 /* fileName */
            aload 1 /* ref */
            getfield org.antlr.v4.tool.ast.GrammarAST.token:Lorg/antlr/runtime/Token;
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* ref */
            invokevirtual org.antlr.v4.tool.ast.GrammarAST.getText:()Ljava/lang/String;
            aastore
        13: .line 478
            invokevirtual org.antlr.v4.tool.ErrorManager.grammarError:(Lorg/antlr/v4/tool/ErrorType;Ljava/lang/String;Lorg/antlr/runtime/Token;[Ljava/lang/Object;)V
        14: .line 481
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.lang.String fileName
        end local 3 // org.antlr.v4.tool.ast.RuleAST ruleAST
        end local 2 // org.antlr.v4.tool.ast.ActionAST arg
        end local 1 // org.antlr.v4.tool.ast.GrammarAST ref
        end local 0 // org.antlr.v4.Tool$1UndefChecker this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Lorg/antlr/v4/Tool$1UndefChecker;
            0   15     1       ref  Lorg/antlr/v4/tool/ast/GrammarAST;
            0   15     2       arg  Lorg/antlr/v4/tool/ast/ActionAST;
            1   15     3   ruleAST  Lorg/antlr/v4/tool/ast/RuleAST;
            2   15     4  fileName  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      ref   
      arg   

  public org.antlr.v4.tool.ErrorManager getErrorManager();
    descriptor: ()Lorg/antlr/v4/tool/ErrorManager;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.antlr.v4.Tool$1UndefChecker this
         0: .line 483
            aload 0 /* this */
            getfield org.antlr.v4.Tool$1UndefChecker.this$0:Lorg/antlr/v4/Tool;
            getfield org.antlr.v4.Tool.errMgr:Lorg/antlr/v4/tool/ErrorManager;
            areturn
        end local 0 // org.antlr.v4.Tool$1UndefChecker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/antlr/v4/Tool$1UndefChecker;
}
SourceFile: "Tool.java"
EnclosingMethod: org.antlr.v4.Tool.checkForRuleIssues:(Lorg/antlr/v4/tool/Grammar;)Z
NestHost: org.antlr.v4.Tool
InnerClasses:
  UndefChecker = org.antlr.v4.Tool$1UndefChecker