public final class com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor extends com.oracle.js.parser.ir.visitor.NodeVisitor<com.oracle.js.parser.ir.LexicalContext>
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor
  super_class: com.oracle.js.parser.ir.visitor.NodeVisitor
{
  private static final int TABWIDTH;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private final java.lang.StringBuilder sb;
    descriptor: Ljava/lang/StringBuilder;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int indent;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private static final java.lang.String EOLN;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "\n"

  private final boolean printLineNumbers;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean printTypes;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int lastLineNumber;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
         0: .line 106
            aload 0 /* this */
            iconst_1
            iconst_1
            invokespecial com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.<init>:(ZZ)V
         1: .line 107
            return
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;

  public void <init>(boolean, boolean);
    descriptor: (ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // boolean printLineNumbers
        start local 2 // boolean printTypes
         0: .line 116
            aload 0 /* this */
            new com.oracle.js.parser.ir.LexicalContext
            dup
            invokespecial com.oracle.js.parser.ir.LexicalContext.<init>:()V
            invokespecial com.oracle.js.parser.ir.visitor.NodeVisitor.<init>:(Lcom/oracle/js/parser/ir/LexicalContext;)V
         1: .line 100
            aload 0 /* this */
            iconst_m1
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.lastLineNumber:I
         2: .line 117
            aload 0 /* this */
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
         3: .line 118
            aload 0 /* this */
            iload 1 /* printLineNumbers */
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printLineNumbers:Z
         4: .line 119
            aload 0 /* this */
            iload 2 /* printTypes */
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
         5: .line 120
            return
        end local 2 // boolean printTypes
        end local 1 // boolean printLineNumbers
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    6     1  printLineNumbers  Z
            0    6     2        printTypes  Z
    MethodParameters:
                  Name  Flags
      printLineNumbers  final
      printTypes        final

  public void <init>(com.oracle.js.parser.ir.Node);
    descriptor: (Lcom/oracle/js/parser/ir/Node;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.Node root
         0: .line 128
            aload 0 /* this */
            aload 1 /* root */
            iconst_1
            iconst_1
            invokespecial com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.<init>:(Lcom/oracle/js/parser/ir/Node;ZZ)V
         1: .line 129
            return
        end local 1 // com.oracle.js.parser.ir.Node root
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  root  Lcom/oracle/js/parser/ir/Node;
    MethodParameters:
      Name  Flags
      root  final

  public void <init>(com.oracle.js.parser.ir.Node, boolean, boolean);
    descriptor: (Lcom/oracle/js/parser/ir/Node;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.Node root
        start local 2 // boolean printLineNumbers
        start local 3 // boolean printTypes
         0: .line 139
            aload 0 /* this */
            iload 2 /* printLineNumbers */
            iload 3 /* printTypes */
            invokespecial com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.<init>:(ZZ)V
         1: .line 140
            aload 0 /* this */
            aload 1 /* root */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.visit:(Lcom/oracle/js/parser/ir/Node;)V
         2: .line 141
            return
        end local 3 // boolean printTypes
        end local 2 // boolean printLineNumbers
        end local 1 // com.oracle.js.parser.ir.Node root
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    3     0              this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    3     1              root  Lcom/oracle/js/parser/ir/Node;
            0    3     2  printLineNumbers  Z
            0    3     3        printTypes  Z
    MethodParameters:
                  Name  Flags
      root              final
      printLineNumbers  final
      printTypes        final

  private void visit(com.oracle.js.parser.ir.Node);
    descriptor: (Lcom/oracle/js/parser/ir/Node;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.Node root
         0: .line 144
            aload 1 /* root */
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Node.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         1: .line 145
            return
        end local 1 // com.oracle.js.parser.ir.Node root
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  root  Lcom/oracle/js/parser/ir/Node;
    MethodParameters:
      Name  Flags
      root  final

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
         0: .line 149
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;

  private void indent();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
         0: .line 156
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            istore 1 /* i */
        start local 1 // int i
         1: goto 4
         2: .line 157
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         3: .line 156
            iinc 1 /* i */ -1
      StackMap locals:
      StackMap stack:
         4: iload 1 /* i */
            ifgt 2
        end local 1 // int i
         5: .line 159
            return
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            1    5     1     i  I

  public boolean enterDefault(com.oracle.js.parser.ir.Node);
    descriptor: (Lcom/oracle/js/parser/ir/Node;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.Node node
         0: .line 167
            aload 1 /* node */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.Node.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 168
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.Node node
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  node  Lcom/oracle/js/parser/ir/Node;
    MethodParameters:
      Name  Flags
      node  final

  public boolean enterContinueNode(com.oracle.js.parser.ir.ContinueNode);
    descriptor: (Lcom/oracle/js/parser/ir/ContinueNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.ContinueNode node
         0: .line 173
            aload 1 /* node */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.ContinueNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 174
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.ContinueNode node
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  node  Lcom/oracle/js/parser/ir/ContinueNode;
    MethodParameters:
      Name  Flags
      node  final

  public boolean enterBreakNode(com.oracle.js.parser.ir.BreakNode);
    descriptor: (Lcom/oracle/js/parser/ir/BreakNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.BreakNode node
         0: .line 179
            aload 1 /* node */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.BreakNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 180
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.BreakNode node
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  node  Lcom/oracle/js/parser/ir/BreakNode;
    MethodParameters:
      Name  Flags
      node  final

  public boolean enterThrowNode(com.oracle.js.parser.ir.ThrowNode);
    descriptor: (Lcom/oracle/js/parser/ir/ThrowNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.ThrowNode node
         0: .line 185
            aload 1 /* node */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.ThrowNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 186
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.ThrowNode node
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  node  Lcom/oracle/js/parser/ir/ThrowNode;
    MethodParameters:
      Name  Flags
      node  final

  public boolean enterBlock(com.oracle.js.parser.ir.Block);
    descriptor: (Lcom/oracle/js/parser/ir/Block;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.Block block
         0: .line 191
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         1: .line 192
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 123
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 194
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            iadd
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
         3: .line 196
            aload 1 /* block */
            invokevirtual com.oracle.js.parser.ir.Block.getStatements:()Ljava/util/List;
            astore 2 /* statements */
        start local 2 // java.util.List statements
         4: .line 197
            aload 0 /* this */
            aload 2 /* statements */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printStatements:(Ljava/util/List;)V
         5: .line 199
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            isub
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
         6: .line 201
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         7: .line 202
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
         8: .line 204
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 125
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         9: .line 206
            iconst_0
            ireturn
        end local 2 // java.util.List statements
        end local 1 // com.oracle.js.parser.ir.Block block
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0        this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0   10     1       block  Lcom/oracle/js/parser/ir/Block;
            4   10     2  statements  Ljava/util/List<Lcom/oracle/js/parser/ir/Statement;>;
    MethodParameters:
       Name  Flags
      block  final

  private void printStatements(java.util.List<com.oracle.js.parser.ir.Statement>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // java.util.List statements
         0: .line 210
            aload 1 /* statements */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 22
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.Statement
            astore 2 /* statement */
        start local 2 // com.oracle.js.parser.ir.Statement statement
         2: .line 211
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printLineNumbers:Z
            ifeq 9
         3: .line 212
            aload 2 /* statement */
            invokevirtual com.oracle.js.parser.ir.Statement.getLineNumber:()I
            istore 4 /* lineNumber */
        start local 4 // int lineNumber
         4: .line 213
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 214
            iload 4 /* lineNumber */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.lastLineNumber:I
            if_icmpeq 8
         6: .line 215
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
         7: .line 216
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "[|"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 4 /* lineNumber */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc "|];"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 218
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor java.util.List com.oracle.js.parser.ir.Statement java.util.Iterator int
      StackMap stack:
            aload 0 /* this */
            iload 4 /* lineNumber */
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.lastLineNumber:I
        end local 4 // int lineNumber
         9: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
        10: .line 222
            aload 2 /* statement */
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Statement.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
        11: .line 224
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.length:()I
            iconst_1
            isub
            istore 4 /* lastIndex */
        start local 4 // int lastIndex
        12: .line 225
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            iload 4 /* lastIndex */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            istore 5 /* lastChar */
        start local 5 // char lastChar
        13: .line 226
            goto 15
        14: .line 227
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            iinc 4 /* lastIndex */ -1
            iload 4 /* lastIndex */
            invokevirtual java.lang.StringBuilder.charAt:(I)C
            istore 5 /* lastChar */
        15: .line 226
      StackMap locals:
      StackMap stack:
            iload 5 /* lastChar */
            invokestatic java.lang.Character.isWhitespace:(C)Z
            ifeq 16
            iload 4 /* lastIndex */
            ifge 14
        16: .line 230
      StackMap locals:
      StackMap stack:
            iload 5 /* lastChar */
            bipush 125
            if_icmpeq 18
            iload 5 /* lastChar */
            bipush 59
            if_icmpeq 18
        17: .line 231
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 59
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        18: .line 234
      StackMap locals:
      StackMap stack:
            aload 2 /* statement */
            invokevirtual com.oracle.js.parser.ir.Statement.hasGoto:()Z
            ifeq 20
        19: .line 235
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " [GOTO]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        20: .line 238
      StackMap locals:
      StackMap stack:
            aload 2 /* statement */
            invokevirtual com.oracle.js.parser.ir.Statement.isTerminal:()Z
            ifeq 22
        21: .line 239
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " [TERMINAL]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // char lastChar
        end local 4 // int lastIndex
        end local 2 // com.oracle.js.parser.ir.Statement statement
        22: .line 210
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor java.util.List top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
        23: .line 242
            return
        end local 1 // java.util.List statements
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0   24     1  statements  Ljava/util/List<Lcom/oracle/js/parser/ir/Statement;>;
            2   22     2   statement  Lcom/oracle/js/parser/ir/Statement;
            4    9     4  lineNumber  I
           12   22     4   lastIndex  I
           13   22     5    lastChar  C
    Signature: (Ljava/util/List<Lcom/oracle/js/parser/ir/Statement;>;)V
    MethodParameters:
            Name  Flags
      statements  final

  public boolean enterBlockStatement(com.oracle.js.parser.ir.BlockStatement);
    descriptor: (Lcom/oracle/js/parser/ir/BlockStatement;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.BlockStatement statement
         0: .line 246
            aload 1 /* statement */
            invokevirtual com.oracle.js.parser.ir.BlockStatement.getBlock:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         1: .line 247
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.BlockStatement statement
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  statement  Lcom/oracle/js/parser/ir/BlockStatement;
    MethodParameters:
           Name  Flags
      statement  final

  public boolean enterBinaryNode(com.oracle.js.parser.ir.BinaryNode);
    descriptor: (Lcom/oracle/js/parser/ir/BinaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.BinaryNode binaryNode
         0: .line 252
            aload 1 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.getLhs:()Lcom/oracle/js/parser/ir/Expression;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Expression.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         1: .line 253
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         2: .line 254
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 1 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.tokenType:()Lcom/oracle/js/parser/TokenType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
         3: .line 255
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         4: .line 256
            aload 1 /* binaryNode */
            invokevirtual com.oracle.js.parser.ir.BinaryNode.getRhs:()Lcom/oracle/js/parser/ir/Expression;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Expression.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         5: .line 257
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.BinaryNode binaryNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    6     1  binaryNode  Lcom/oracle/js/parser/ir/BinaryNode;
    MethodParameters:
            Name  Flags
      binaryNode  final

  public boolean enterJoinPredecessorExpression(com.oracle.js.parser.ir.JoinPredecessorExpression);
    descriptor: (Lcom/oracle/js/parser/ir/JoinPredecessorExpression;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.JoinPredecessorExpression expr
         0: .line 262
            aload 1 /* expr */
            invokevirtual com.oracle.js.parser.ir.JoinPredecessorExpression.getExpression:()Lcom/oracle/js/parser/ir/Expression;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Expression.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         1: .line 263
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.JoinPredecessorExpression expr
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  expr  Lcom/oracle/js/parser/ir/JoinPredecessorExpression;
    MethodParameters:
      Name  Flags
      expr  final

  public boolean enterIdentNode(com.oracle.js.parser.ir.IdentNode);
    descriptor: (Lcom/oracle/js/parser/ir/IdentNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.IdentNode identNode
         0: .line 268
            aload 1 /* identNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.IdentNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 269
            iconst_1
            ireturn
        end local 1 // com.oracle.js.parser.ir.IdentNode identNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  identNode  Lcom/oracle/js/parser/ir/IdentNode;
    MethodParameters:
           Name  Flags
      identNode  final

  public boolean enterUnaryNode(com.oracle.js.parser.ir.UnaryNode);
    descriptor: (Lcom/oracle/js/parser/ir/UnaryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.UnaryNode unaryNode
         0: .line 274
            aload 1 /* unaryNode */
            invokevirtual com.oracle.js.parser.ir.UnaryNode.tokenType:()Lcom/oracle/js/parser/TokenType;
            astore 2 /* tokenType */
        start local 2 // com.oracle.js.parser.TokenType tokenType
         1: .line 275
            aload 2 /* tokenType */
            invokevirtual com.oracle.js.parser.TokenType.getName:()Ljava/lang/String;
            astore 3 /* name */
        start local 3 // java.lang.String name
         2: .line 276
            aload 2 /* tokenType */
            getstatic com.oracle.js.parser.TokenType.DECPOSTFIX:Lcom/oracle/js/parser/TokenType;
            if_acmpeq 3
            aload 2 /* tokenType */
            getstatic com.oracle.js.parser.TokenType.INCPOSTFIX:Lcom/oracle/js/parser/TokenType;
            if_acmpeq 3
            iconst_0
            goto 4
      StackMap locals: com.oracle.js.parser.TokenType java.lang.String
      StackMap stack:
         3: iconst_1
      StackMap locals:
      StackMap stack: int
         4: istore 4 /* isPostfix */
        start local 4 // boolean isPostfix
         5: .line 278
            aload 2 /* tokenType */
            aload 1 /* unaryNode */
            invokevirtual com.oracle.js.parser.ir.UnaryNode.getExpression:()Lcom/oracle/js/parser/ir/Expression;
            invokevirtual com.oracle.js.parser.ir.Expression.tokenType:()Lcom/oracle/js/parser/TokenType;
            iconst_0
            invokevirtual com.oracle.js.parser.TokenType.needsParens:(Lcom/oracle/js/parser/TokenType;Z)Z
            istore 5 /* rhsParen */
        start local 5 // boolean rhsParen
         6: .line 280
            iload 4 /* isPostfix */
            ifne 14
         7: .line 281
            aload 3 /* name */
            ifnonnull 11
         8: .line 282
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 2 /* tokenType */
            invokevirtual com.oracle.js.parser.TokenType.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         9: .line 283
            iconst_1
            istore 5 /* rhsParen */
        10: .line 284
            goto 14
        11: .line 285
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 3 /* name */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 287
            aload 2 /* tokenType */
            invokevirtual com.oracle.js.parser.TokenType.ordinal:()I
            getstatic com.oracle.js.parser.TokenType.BIT_NOT:Lcom/oracle/js/parser/TokenType;
            invokevirtual com.oracle.js.parser.TokenType.ordinal:()I
            if_icmple 14
        13: .line 288
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        14: .line 293
      StackMap locals:
      StackMap stack:
            iload 5 /* rhsParen */
            ifeq 16
        15: .line 294
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        16: .line 297
      StackMap locals:
      StackMap stack:
            aload 1 /* unaryNode */
            invokevirtual com.oracle.js.parser.ir.UnaryNode.getExpression:()Lcom/oracle/js/parser/ir/Expression;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.Expression.toString:(Ljava/lang/StringBuilder;Z)V
        17: .line 299
            iload 5 /* rhsParen */
            ifeq 19
        18: .line 300
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        19: .line 303
      StackMap locals:
      StackMap stack:
            iload 4 /* isPostfix */
            ifeq 23
        20: .line 304
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 2 /* tokenType */
            getstatic com.oracle.js.parser.TokenType.DECPOSTFIX:Lcom/oracle/js/parser/TokenType;
            if_acmpne 21
            ldc "--"
            goto 22
      StackMap locals:
      StackMap stack: java.lang.StringBuilder
        21: ldc "++"
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor com.oracle.js.parser.ir.UnaryNode com.oracle.js.parser.TokenType java.lang.String int int
      StackMap stack: java.lang.StringBuilder java.lang.String
        22: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        23: .line 306
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 5 // boolean rhsParen
        end local 4 // boolean isPostfix
        end local 3 // java.lang.String name
        end local 2 // com.oracle.js.parser.TokenType tokenType
        end local 1 // com.oracle.js.parser.ir.UnaryNode unaryNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0       this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0   24     1  unaryNode  Lcom/oracle/js/parser/ir/UnaryNode;
            1   24     2  tokenType  Lcom/oracle/js/parser/TokenType;
            2   24     3       name  Ljava/lang/String;
            5   24     4  isPostfix  Z
            6   24     5   rhsParen  Z
    MethodParameters:
           Name  Flags
      unaryNode  final

  public boolean enterExpressionStatement(com.oracle.js.parser.ir.ExpressionStatement);
    descriptor: (Lcom/oracle/js/parser/ir/ExpressionStatement;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.ExpressionStatement expressionStatement
         0: .line 311
            aload 1 /* expressionStatement */
            invokevirtual com.oracle.js.parser.ir.ExpressionStatement.getExpression:()Lcom/oracle/js/parser/ir/Expression;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Expression.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         1: .line 312
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.ExpressionStatement expressionStatement
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    2     1  expressionStatement  Lcom/oracle/js/parser/ir/ExpressionStatement;
    MethodParameters:
                     Name  Flags
      expressionStatement  final

  public boolean enterForNode(com.oracle.js.parser.ir.ForNode);
    descriptor: (Lcom/oracle/js/parser/ir/ForNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.ForNode forNode
         0: .line 317
            aload 1 /* forNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.ForNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 318
            aload 1 /* forNode */
            invokevirtual com.oracle.js.parser.ir.ForNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         2: .line 319
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.ForNode forNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0     this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    3     1  forNode  Lcom/oracle/js/parser/ir/ForNode;
    MethodParameters:
         Name  Flags
      forNode  final

  public boolean enterFunctionNode(com.oracle.js.parser.ir.FunctionNode);
    descriptor: (Lcom/oracle/js/parser/ir/FunctionNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.FunctionNode functionNode
         0: .line 324
            aload 1 /* functionNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.FunctionNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 325
            aload 0 /* this */
            aload 1 /* functionNode */
            invokevirtual com.oracle.js.parser.ir.FunctionNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.enterBlock:(Lcom/oracle/js/parser/ir/Block;)Z
            pop
         2: .line 326
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.FunctionNode functionNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    3     1  functionNode  Lcom/oracle/js/parser/ir/FunctionNode;
    MethodParameters:
              Name  Flags
      functionNode  final

  public boolean enterIfNode(com.oracle.js.parser.ir.IfNode);
    descriptor: (Lcom/oracle/js/parser/ir/IfNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.IfNode ifNode
         0: .line 331
            aload 1 /* ifNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.IfNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 332
            aload 1 /* ifNode */
            invokevirtual com.oracle.js.parser.ir.IfNode.getPass:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         2: .line 334
            aload 1 /* ifNode */
            invokevirtual com.oracle.js.parser.ir.IfNode.getFail:()Lcom/oracle/js/parser/ir/Block;
            astore 2 /* fail */
        start local 2 // com.oracle.js.parser.ir.Block fail
         3: .line 336
            aload 2 /* fail */
            ifnull 6
         4: .line 337
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " else "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 338
            aload 2 /* fail */
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         6: .line 340
      StackMap locals: com.oracle.js.parser.ir.Block
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.js.parser.ir.Block fail
        end local 1 // com.oracle.js.parser.ir.IfNode ifNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    7     1  ifNode  Lcom/oracle/js/parser/ir/IfNode;
            3    7     2    fail  Lcom/oracle/js/parser/ir/Block;
    MethodParameters:
        Name  Flags
      ifNode  final

  public boolean enterLabelNode(com.oracle.js.parser.ir.LabelNode);
    descriptor: (Lcom/oracle/js/parser/ir/LabelNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.LabelNode labeledNode
         0: .line 345
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            isub
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
         1: .line 346
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
         2: .line 347
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            iadd
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
         3: .line 348
            aload 1 /* labeledNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.LabelNode.toString:(Ljava/lang/StringBuilder;Z)V
         4: .line 349
            aload 1 /* labeledNode */
            invokevirtual com.oracle.js.parser.ir.LabelNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         5: .line 350
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.LabelNode labeledNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    6     1  labeledNode  Lcom/oracle/js/parser/ir/LabelNode;
    MethodParameters:
             Name  Flags
      labeledNode  final

  public boolean enterSwitchNode(com.oracle.js.parser.ir.SwitchNode);
    descriptor: (Lcom/oracle/js/parser/ir/SwitchNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.SwitchNode switchNode
         0: .line 355
            aload 1 /* switchNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.SwitchNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 356
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " {"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 358
            aload 1 /* switchNode */
            invokevirtual com.oracle.js.parser.ir.SwitchNode.getCases:()Ljava/util/List;
            astore 2 /* cases */
        start local 2 // java.util.List cases
         3: .line 360
            aload 2 /* cases */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 11
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor com.oracle.js.parser.ir.SwitchNode java.util.List top java.util.Iterator
      StackMap stack:
         4: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.CaseNode
            astore 3 /* caseNode */
        start local 3 // com.oracle.js.parser.ir.CaseNode caseNode
         5: .line 361
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         6: .line 362
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
         7: .line 363
            aload 3 /* caseNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.CaseNode.toString:(Ljava/lang/StringBuilder;Z)V
         8: .line 364
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            iadd
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
         9: .line 365
            aload 0 /* this */
            aload 3 /* caseNode */
            invokevirtual com.oracle.js.parser.ir.CaseNode.getStatements:()Ljava/util/List;
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printStatements:(Ljava/util/List;)V
        10: .line 366
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
            iconst_4
            isub
            putfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:I
        end local 3 // com.oracle.js.parser.ir.CaseNode caseNode
        11: .line 360
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        12: .line 368
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 369
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.indent:()V
        14: .line 370
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "}"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 372
            iconst_0
            ireturn
        end local 2 // java.util.List cases
        end local 1 // com.oracle.js.parser.ir.SwitchNode switchNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0   16     1  switchNode  Lcom/oracle/js/parser/ir/SwitchNode;
            3   16     2       cases  Ljava/util/List<Lcom/oracle/js/parser/ir/CaseNode;>;
            5   11     3    caseNode  Lcom/oracle/js/parser/ir/CaseNode;
    MethodParameters:
            Name  Flags
      switchNode  final

  public boolean enterTryNode(com.oracle.js.parser.ir.TryNode);
    descriptor: (Lcom/oracle/js/parser/ir/TryNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.TryNode tryNode
         0: .line 377
            aload 1 /* tryNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.TryNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 378
            aload 1 /* tryNode */
            invokevirtual com.oracle.js.parser.ir.TryNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         2: .line 380
            aload 1 /* tryNode */
            invokevirtual com.oracle.js.parser.ir.TryNode.getCatches:()Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 6
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor com.oracle.js.parser.ir.TryNode top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.js.parser.ir.CatchNode
            astore 2 /* catchNode */
        start local 2 // com.oracle.js.parser.ir.CatchNode catchNode
         4: .line 381
            aload 2 /* catchNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.CatchNode.toString:(Ljava/lang/StringBuilder;Z)V
         5: .line 382
            aload 2 /* catchNode */
            invokevirtual com.oracle.js.parser.ir.CatchNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
        end local 2 // com.oracle.js.parser.ir.CatchNode catchNode
         6: .line 380
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         7: .line 385
            aload 1 /* tryNode */
            invokevirtual com.oracle.js.parser.ir.TryNode.getFinallyBody:()Lcom/oracle/js/parser/ir/Block;
            astore 2 /* finallyBody */
        start local 2 // com.oracle.js.parser.ir.Block finallyBody
         8: .line 387
            aload 2 /* finallyBody */
            ifnull 11
         9: .line 388
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " finally "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 389
            aload 2 /* finallyBody */
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
        11: .line 391
      StackMap locals: com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor com.oracle.js.parser.ir.TryNode com.oracle.js.parser.ir.Block
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.js.parser.ir.Block finallyBody
        end local 1 // com.oracle.js.parser.ir.TryNode tryNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0   12     1      tryNode  Lcom/oracle/js/parser/ir/TryNode;
            4    6     2    catchNode  Lcom/oracle/js/parser/ir/CatchNode;
            8   12     2  finallyBody  Lcom/oracle/js/parser/ir/Block;
    MethodParameters:
         Name  Flags
      tryNode  final

  public boolean enterVarNode(com.oracle.js.parser.ir.VarNode);
    descriptor: (Lcom/oracle/js/parser/ir/VarNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.VarNode varNode
         0: .line 396
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 1 /* varNode */
            invokevirtual com.oracle.js.parser.ir.VarNode.tokenType:()Lcom/oracle/js/parser/TokenType;
            invokevirtual com.oracle.js.parser.TokenType.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         1: .line 397
            aload 1 /* varNode */
            invokevirtual com.oracle.js.parser.ir.VarNode.getName:()Lcom/oracle/js/parser/ir/IdentNode;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.IdentNode.toString:(Ljava/lang/StringBuilder;Z)V
         2: .line 398
            aload 1 /* varNode */
            invokevirtual com.oracle.js.parser.ir.VarNode.getInit:()Lcom/oracle/js/parser/ir/Expression;
            astore 2 /* init */
        start local 2 // com.oracle.js.parser.ir.Node init
         3: .line 399
            aload 2 /* init */
            ifnull 6
         4: .line 400
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc " = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         5: .line 401
            aload 2 /* init */
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Node.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         6: .line 404
      StackMap locals: com.oracle.js.parser.ir.Node
      StackMap stack:
            iconst_0
            ireturn
        end local 2 // com.oracle.js.parser.ir.Node init
        end local 1 // com.oracle.js.parser.ir.VarNode varNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0     this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    7     1  varNode  Lcom/oracle/js/parser/ir/VarNode;
            3    7     2     init  Lcom/oracle/js/parser/ir/Node;
    MethodParameters:
         Name  Flags
      varNode  final

  public boolean enterWhileNode(com.oracle.js.parser.ir.WhileNode);
    descriptor: (Lcom/oracle/js/parser/ir/WhileNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.WhileNode whileNode
         0: .line 409
            aload 1 /* whileNode */
            invokevirtual com.oracle.js.parser.ir.WhileNode.isDoWhile:()Z
            ifeq 6
         1: .line 410
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            ldc "do"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 411
            aload 1 /* whileNode */
            invokevirtual com.oracle.js.parser.ir.WhileNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         3: .line 412
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            bipush 32
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
         4: .line 413
            aload 1 /* whileNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.WhileNode.toString:(Ljava/lang/StringBuilder;Z)V
         5: .line 414
            goto 8
         6: .line 415
      StackMap locals:
      StackMap stack:
            aload 1 /* whileNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.WhileNode.toString:(Ljava/lang/StringBuilder;Z)V
         7: .line 416
            aload 1 /* whileNode */
            invokevirtual com.oracle.js.parser.ir.WhileNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         8: .line 419
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.WhileNode whileNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    9     1  whileNode  Lcom/oracle/js/parser/ir/WhileNode;
    MethodParameters:
           Name  Flags
      whileNode  final

  public boolean enterWithNode(com.oracle.js.parser.ir.WithNode);
    descriptor: (Lcom/oracle/js/parser/ir/WithNode;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
        start local 1 // com.oracle.js.parser.ir.WithNode withNode
         0: .line 424
            aload 1 /* withNode */
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.sb:Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor.printTypes:Z
            invokevirtual com.oracle.js.parser.ir.WithNode.toString:(Ljava/lang/StringBuilder;Z)V
         1: .line 425
            aload 1 /* withNode */
            invokevirtual com.oracle.js.parser.ir.WithNode.getBody:()Lcom/oracle/js/parser/ir/Block;
            aload 0 /* this */
            invokevirtual com.oracle.js.parser.ir.Block.accept:(Lcom/oracle/js/parser/ir/visitor/NodeVisitor;)Lcom/oracle/js/parser/ir/Node;
            pop
         2: .line 427
            iconst_0
            ireturn
        end local 1 // com.oracle.js.parser.ir.WithNode withNode
        end local 0 // com.oracle.truffle.js.parser.internal.ir.debug.PrintVisitor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/js/parser/internal/ir/debug/PrintVisitor;
            0    3     1  withNode  Lcom/oracle/js/parser/ir/WithNode;
    MethodParameters:
          Name  Flags
      withNode  final
}
Signature: Lcom/oracle/js/parser/ir/visitor/NodeVisitor<Lcom/oracle/js/parser/ir/LexicalContext;>;
SourceFile: "PrintVisitor.java"