public class com.oracle.truffle.sl.parser.SLNodeFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.sl.parser.SLNodeFactory
  super_class: java.lang.Object
{
  private final com.oracle.truffle.api.source.Source source;
    descriptor: Lcom/oracle/truffle/api/source/Source;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.Map<java.lang.String, com.oracle.truffle.api.RootCallTarget> allFunctions;
    descriptor: Ljava/util/Map;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/api/RootCallTarget;>;

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

  private java.lang.String functionName;
    descriptor: Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE

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

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

  private com.oracle.truffle.api.frame.FrameDescriptor frameDescriptor;
    descriptor: Lcom/oracle/truffle/api/frame/FrameDescriptor;
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<com.oracle.truffle.sl.nodes.SLStatementNode> methodNodes;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;

  private com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope lexicalScope;
    descriptor: Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
    flags: (0x0002) ACC_PRIVATE

  private final com.oracle.truffle.sl.SLLanguage language;
    descriptor: Lcom/oracle/truffle/sl/SLLanguage;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 102
            ldc Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.oracle.truffle.sl.SLLanguage, com.oracle.truffle.api.source.Source);
    descriptor: (Lcom/oracle/truffle/sl/SLLanguage;Lcom/oracle/truffle/api/source/Source;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // com.oracle.truffle.sl.SLLanguage language
        start local 2 // com.oracle.truffle.api.source.Source source
         0: .line 138
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 139
            aload 0 /* this */
            aload 1 /* language */
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.language:Lcom/oracle/truffle/sl/SLLanguage;
         2: .line 140
            aload 0 /* this */
            aload 2 /* source */
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.source:Lcom/oracle/truffle/api/source/Source;
         3: .line 141
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.allFunctions:Ljava/util/Map;
         4: .line 142
            return
        end local 2 // com.oracle.truffle.api.source.Source source
        end local 1 // com.oracle.truffle.sl.SLLanguage language
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    5     1  language  Lcom/oracle/truffle/sl/SLLanguage;
            0    5     2    source  Lcom/oracle/truffle/api/source/Source;
    MethodParameters:
          Name  Flags
      language  
      source    

  public java.util.Map<java.lang.String, com.oracle.truffle.api.RootCallTarget> getAllFunctions();
    descriptor: ()Ljava/util/Map;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 145
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.allFunctions:Ljava/util/Map;
            areturn
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    Signature: ()Ljava/util/Map<Ljava/lang/String;Lcom/oracle/truffle/api/RootCallTarget;>;

  public void startFunction(org.antlr.v4.runtime.Token, org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;Lorg/antlr/v4/runtime/Token;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token nameToken
        start local 2 // org.antlr.v4.runtime.Token bodyStartToken
         0: .line 149
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionStartPos:I
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 150
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 2
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionName:Ljava/lang/String;
            ifnull 2
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         2: .line 151
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 3
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionBodyStartPos:I
            ifeq 3
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         3: .line 152
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 4
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
            ifeq 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 153
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 5
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.frameDescriptor:Lcom/oracle/truffle/api/frame/FrameDescriptor;
            ifnull 5
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         5: .line 154
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 6
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            ifnull 6
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         6: .line 156
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* nameToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionStartPos:I
         7: .line 157
            aload 0 /* this */
            aload 1 /* nameToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionName:Ljava/lang/String;
         8: .line 158
            aload 0 /* this */
            aload 2 /* bodyStartToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionBodyStartPos:I
         9: .line 159
            aload 0 /* this */
            new com.oracle.truffle.api.frame.FrameDescriptor
            dup
            invokespecial com.oracle.truffle.api.frame.FrameDescriptor.<init>:()V
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.frameDescriptor:Lcom/oracle/truffle/api/frame/FrameDescriptor;
        10: .line 160
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.methodNodes:Ljava/util/List;
        11: .line 161
            aload 0 /* this */
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.startBlock:()V
        12: .line 162
            return
        end local 2 // org.antlr.v4.runtime.Token bodyStartToken
        end local 1 // org.antlr.v4.runtime.Token nameToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   13     0            this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0   13     1       nameToken  Lorg/antlr/v4/runtime/Token;
            0   13     2  bodyStartToken  Lorg/antlr/v4/runtime/Token;
    MethodParameters:
                Name  Flags
      nameToken       
      bodyStartToken  

  public void addFormalParameter(org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token nameToken
         0: .line 170
            new com.oracle.truffle.sl.nodes.local.SLReadArgumentNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
            invokespecial com.oracle.truffle.sl.nodes.local.SLReadArgumentNode.<init>:(I)V
            astore 2 /* readArg */
        start local 2 // com.oracle.truffle.sl.nodes.local.SLReadArgumentNode readArg
         1: .line 171
            aload 2 /* readArg */
            aload 1 /* nameToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            aload 1 /* nameToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            invokevirtual com.oracle.truffle.sl.nodes.local.SLReadArgumentNode.setSourceSection:(II)V
         2: .line 172
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* nameToken */
            iconst_0
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.createStringLiteral:(Lorg/antlr/v4/runtime/Token;Z)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            aload 2 /* readArg */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.createAssignment:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Ljava/lang/Integer;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            astore 3 /* assignment */
        start local 3 // com.oracle.truffle.sl.nodes.SLExpressionNode assignment
         3: .line 173
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.methodNodes:Ljava/util/List;
            aload 3 /* assignment */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 174
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
            iconst_1
            iadd
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
         5: .line 175
            return
        end local 3 // com.oracle.truffle.sl.nodes.SLExpressionNode assignment
        end local 2 // com.oracle.truffle.sl.nodes.local.SLReadArgumentNode readArg
        end local 1 // org.antlr.v4.runtime.Token nameToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    6     1   nameToken  Lorg/antlr/v4/runtime/Token;
            1    6     2     readArg  Lcom/oracle/truffle/sl/nodes/local/SLReadArgumentNode;
            3    6     3  assignment  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    MethodParameters:
           Name  Flags
      nameToken  

  public void finishFunction(com.oracle.truffle.sl.nodes.SLStatementNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=7, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // com.oracle.truffle.sl.nodes.SLStatementNode bodyNode
         0: .line 178
            aload 1 /* bodyNode */
            ifnonnull 3
         1: .line 180
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            getfield com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope.outer:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
         2: .line 181
            goto 12
         3: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.methodNodes:Ljava/util/List;
            aload 1 /* bodyNode */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         4: .line 183
            aload 1 /* bodyNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.getSourceEndIndex:()I
            istore 2 /* bodyEndPos */
        start local 2 // int bodyEndPos
         5: .line 184
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.source:Lcom/oracle/truffle/api/source/Source;
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionStartPos:I
            iload 2 /* bodyEndPos */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionStartPos:I
            isub
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(II)Lcom/oracle/truffle/api/source/SourceSection;
            astore 3 /* functionSrc */
        start local 3 // com.oracle.truffle.api.source.SourceSection functionSrc
         6: .line 185
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.methodNodes:Ljava/util/List;
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionBodyStartPos:I
            iload 2 /* bodyEndPos */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionBodyStartPos:I
            isub
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.finishBlock:(Ljava/util/List;III)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            astore 4 /* methodBlock */
        start local 4 // com.oracle.truffle.sl.nodes.SLStatementNode methodBlock
         7: .line 186
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 8
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            ifnull 8
            new java.lang.AssertionError
            dup
            ldc "Wrong scoping of blocks in parser"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         8: .line 188
      StackMap locals: int com.oracle.truffle.api.source.SourceSection com.oracle.truffle.sl.nodes.SLStatementNode
      StackMap stack:
            new com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode
            dup
            aload 4 /* methodBlock */
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
            astore 5 /* functionBodyNode */
        start local 5 // com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode functionBodyNode
         9: .line 189
            aload 5 /* functionBodyNode */
            aload 3 /* functionSrc */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            aload 3 /* functionSrc */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharLength:()I
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode.setSourceSection:(II)V
        10: .line 191
            new com.oracle.truffle.sl.nodes.SLRootNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.language:Lcom/oracle/truffle/sl/SLLanguage;
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.frameDescriptor:Lcom/oracle/truffle/api/frame/FrameDescriptor;
            aload 5 /* functionBodyNode */
            aload 3 /* functionSrc */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionName:Ljava/lang/String;
            invokespecial com.oracle.truffle.sl.nodes.SLRootNode.<init>:(Lcom/oracle/truffle/sl/SLLanguage;Lcom/oracle/truffle/api/frame/FrameDescriptor;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/api/source/SourceSection;Ljava/lang/String;)V
            astore 6 /* rootNode */
        start local 6 // com.oracle.truffle.sl.nodes.SLRootNode rootNode
        11: .line 192
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.allFunctions:Ljava/util/Map;
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.functionName:Ljava/lang/String;
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            aload 6 /* rootNode */
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 6 // com.oracle.truffle.sl.nodes.SLRootNode rootNode
        end local 5 // com.oracle.truffle.sl.nodes.controlflow.SLFunctionBodyNode functionBodyNode
        end local 4 // com.oracle.truffle.sl.nodes.SLStatementNode methodBlock
        end local 3 // com.oracle.truffle.api.source.SourceSection functionSrc
        end local 2 // int bodyEndPos
        12: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionStartPos:I
        13: .line 196
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionName:Ljava/lang/String;
        14: .line 197
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.functionBodyStartPos:I
        15: .line 198
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.parameterCount:I
        16: .line 199
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.frameDescriptor:Lcom/oracle/truffle/api/frame/FrameDescriptor;
        17: .line 200
            aload 0 /* this */
            aconst_null
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
        18: .line 201
            return
        end local 1 // com.oracle.truffle.sl.nodes.SLStatementNode bodyNode
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   19     0              this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0   19     1          bodyNode  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            5   12     2        bodyEndPos  I
            6   12     3       functionSrc  Lcom/oracle/truffle/api/source/SourceSection;
            7   12     4       methodBlock  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            9   12     5  functionBodyNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLFunctionBodyNode;
           11   12     6          rootNode  Lcom/oracle/truffle/sl/nodes/SLRootNode;
    MethodParameters:
          Name  Flags
      bodyNode  

  public void startBlock();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 204
            aload 0 /* this */
            new com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            invokespecial com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope.<init>:(Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;)V
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
         1: .line 205
            return
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;

  public com.oracle.truffle.sl.nodes.SLStatementNode finishBlock(java.util.List<com.oracle.truffle.sl.nodes.SLStatementNode>, int, int);
    descriptor: (Ljava/util/List;II)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // java.util.List bodyNodes
        start local 2 // int startPos
        start local 3 // int length
         0: .line 208
            aload 0 /* this */
            aload 1 /* bodyNodes */
            iconst_0
            iload 2 /* startPos */
            iload 3 /* length */
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.finishBlock:(Ljava/util/List;III)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            areturn
        end local 3 // int length
        end local 2 // int startPos
        end local 1 // java.util.List bodyNodes
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    1     1  bodyNodes  Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
            0    1     2   startPos  I
            0    1     3     length  I
    Signature: (Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;II)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    MethodParameters:
           Name  Flags
      bodyNodes  
      startPos   
      length     

  public com.oracle.truffle.sl.nodes.SLStatementNode finishBlock(java.util.List<com.oracle.truffle.sl.nodes.SLStatementNode>, int, int, int);
    descriptor: (Ljava/util/List;III)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=5
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // java.util.List bodyNodes
        start local 2 // int skipCount
        start local 3 // int startPos
        start local 4 // int length
         0: .line 212
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            getfield com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope.outer:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
            putfield com.oracle.truffle.sl.parser.SLNodeFactory.lexicalScope:Lcom/oracle/truffle/sl/parser/SLNodeFactory$LexicalScope;
         1: .line 214
            aload 1 /* bodyNodes */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.containsNull:(Ljava/util/List;)Z
            ifeq 3
         2: .line 215
            aconst_null
            areturn
         3: .line 218
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            aload 1 /* bodyNodes */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* flattenedNodes */
        start local 5 // java.util.List flattenedNodes
         4: .line 219
            aload 0 /* this */
            aload 1 /* bodyNodes */
            aload 5 /* flattenedNodes */
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.flattenBlocks:(Ljava/lang/Iterable;Ljava/util/List;)V
         5: .line 220
            aload 5 /* flattenedNodes */
            invokeinterface java.util.List.size:()I
            istore 6 /* n */
        start local 6 // int n
         6: .line 221
            iload 2 /* skipCount */
            istore 7 /* i */
        start local 7 // int i
         7: goto 12
         8: .line 222
      StackMap locals: java.util.List int int
      StackMap stack:
            aload 5 /* flattenedNodes */
            iload 7 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.sl.nodes.SLStatementNode
            astore 8 /* statement */
        start local 8 // com.oracle.truffle.sl.nodes.SLStatementNode statement
         9: .line 223
            aload 8 /* statement */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.hasSource:()Z
            ifeq 11
            aload 8 /* statement */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.isHaltInCondition:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;)Z
            ifne 11
        10: .line 224
            aload 8 /* statement */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.addStatementTag:()V
        end local 8 // com.oracle.truffle.sl.nodes.SLStatementNode statement
        11: .line 221
      StackMap locals:
      StackMap stack:
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 7 /* i */
            iload 6 /* n */
            if_icmplt 8
        end local 7 // int i
        13: .line 227
            new com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
            dup
            aload 5 /* flattenedNodes */
            aload 5 /* flattenedNodes */
            invokeinterface java.util.List.size:()I
            anewarray com.oracle.truffle.sl.nodes.SLStatementNode
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.oracle.truffle.sl.nodes.SLStatementNode[]
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.<init>:([Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
            astore 7 /* blockNode */
        start local 7 // com.oracle.truffle.sl.nodes.controlflow.SLBlockNode blockNode
        14: .line 228
            aload 7 /* blockNode */
            iload 3 /* startPos */
            iload 4 /* length */
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.setSourceSection:(II)V
        15: .line 229
            aload 7 /* blockNode */
            areturn
        end local 7 // com.oracle.truffle.sl.nodes.controlflow.SLBlockNode blockNode
        end local 6 // int n
        end local 5 // java.util.List flattenedNodes
        end local 4 // int length
        end local 3 // int startPos
        end local 2 // int skipCount
        end local 1 // java.util.List bodyNodes
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0            this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0   16     1       bodyNodes  Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
            0   16     2       skipCount  I
            0   16     3        startPos  I
            0   16     4          length  I
            4   16     5  flattenedNodes  Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
            6   16     6               n  I
            7   13     7               i  I
            9   11     8       statement  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
           14   16     7       blockNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLBlockNode;
    Signature: (Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;III)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    MethodParameters:
           Name  Flags
      bodyNodes  
      skipCount  
      startPos   
      length     

  private static boolean isHaltInCondition(com.oracle.truffle.sl.nodes.SLStatementNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLStatementNode;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode statement
         0: .line 233
            aload 0 /* statement */
            instanceof com.oracle.truffle.sl.nodes.controlflow.SLIfNode
            ifne 1
            aload 0 /* statement */
            instanceof com.oracle.truffle.sl.nodes.controlflow.SLWhileNode
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode statement
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0  statement  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    MethodParameters:
           Name  Flags
      statement  

  private void flattenBlocks(java.lang.Iterable<? extends com.oracle.truffle.sl.nodes.SLStatementNode>, java.util.List<com.oracle.truffle.sl.nodes.SLStatementNode>);
    descriptor: (Ljava/lang/Iterable;Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // java.lang.Iterable bodyNodes
        start local 2 // java.util.List flattenedNodes
         0: .line 237
            aload 1 /* bodyNodes */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 4
            goto 6
      StackMap locals: com.oracle.truffle.sl.parser.SLNodeFactory java.lang.Iterable java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.oracle.truffle.sl.nodes.SLStatementNode
            astore 3 /* n */
        start local 3 // com.oracle.truffle.sl.nodes.SLStatementNode n
         2: .line 238
            aload 3 /* n */
            instanceof com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
            ifeq 5
         3: .line 239
            aload 0 /* this */
            aload 3 /* n */
            checkcast com.oracle.truffle.sl.nodes.controlflow.SLBlockNode
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLBlockNode.getStatements:()Ljava/util/List;
            aload 2 /* flattenedNodes */
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.flattenBlocks:(Ljava/lang/Iterable;Ljava/util/List;)V
         4: .line 240
            goto 6
         5: .line 241
      StackMap locals: com.oracle.truffle.sl.parser.SLNodeFactory java.lang.Iterable java.util.List com.oracle.truffle.sl.nodes.SLStatementNode java.util.Iterator
      StackMap stack:
            aload 2 /* flattenedNodes */
            aload 3 /* n */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.oracle.truffle.sl.nodes.SLStatementNode n
         6: .line 237
      StackMap locals: com.oracle.truffle.sl.parser.SLNodeFactory java.lang.Iterable java.util.List top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         7: .line 244
            return
        end local 2 // java.util.List flattenedNodes
        end local 1 // java.lang.Iterable bodyNodes
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    8     1       bodyNodes  Ljava/lang/Iterable<+Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
            0    8     2  flattenedNodes  Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;
            2    6     3               n  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    Signature: (Ljava/lang/Iterable<+Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLStatementNode;>;)V
    MethodParameters:
                Name  Flags
      bodyNodes       
      flattenedNodes  

  com.oracle.truffle.sl.nodes.SLStatementNode createDebugger(org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token debuggerToken
         0: .line 253
            new com.oracle.truffle.sl.nodes.controlflow.SLDebuggerNode
            dup
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLDebuggerNode.<init>:()V
            astore 2 /* debuggerNode */
        start local 2 // com.oracle.truffle.sl.nodes.controlflow.SLDebuggerNode debuggerNode
         1: .line 254
            aload 2 /* debuggerNode */
            aload 1 /* debuggerToken */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.srcFromToken:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
         2: .line 255
            aload 2 /* debuggerNode */
            areturn
        end local 2 // com.oracle.truffle.sl.nodes.controlflow.SLDebuggerNode debuggerNode
        end local 1 // org.antlr.v4.runtime.Token debuggerToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    3     1  debuggerToken  Lorg/antlr/v4/runtime/Token;
            1    3     2   debuggerNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLDebuggerNode;
    MethodParameters:
               Name  Flags
      debuggerToken  

  public com.oracle.truffle.sl.nodes.SLStatementNode createBreak(org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token breakToken
         0: .line 265
            new com.oracle.truffle.sl.nodes.controlflow.SLBreakNode
            dup
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLBreakNode.<init>:()V
            astore 2 /* breakNode */
        start local 2 // com.oracle.truffle.sl.nodes.controlflow.SLBreakNode breakNode
         1: .line 266
            aload 2 /* breakNode */
            aload 1 /* breakToken */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.srcFromToken:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
         2: .line 267
            aload 2 /* breakNode */
            areturn
        end local 2 // com.oracle.truffle.sl.nodes.controlflow.SLBreakNode breakNode
        end local 1 // org.antlr.v4.runtime.Token breakToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    3     0        this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    3     1  breakToken  Lorg/antlr/v4/runtime/Token;
            1    3     2   breakNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLBreakNode;
    MethodParameters:
            Name  Flags
      breakToken  

  public com.oracle.truffle.sl.nodes.SLStatementNode createContinue(org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token continueToken
         0: .line 277
            new com.oracle.truffle.sl.nodes.controlflow.SLContinueNode
            dup
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLContinueNode.<init>:()V
            astore 2 /* continueNode */
        start local 2 // com.oracle.truffle.sl.nodes.controlflow.SLContinueNode continueNode
         1: .line 278
            aload 2 /* continueNode */
            aload 1 /* continueToken */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.srcFromToken:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
         2: .line 279
            aload 2 /* continueNode */
            areturn
        end local 2 // com.oracle.truffle.sl.nodes.controlflow.SLContinueNode continueNode
        end local 1 // org.antlr.v4.runtime.Token continueToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    3     1  continueToken  Lorg/antlr/v4/runtime/Token;
            1    3     2   continueNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLContinueNode;
    MethodParameters:
               Name  Flags
      continueToken  

  public com.oracle.truffle.sl.nodes.SLStatementNode createWhile(org.antlr.v4.runtime.Token, com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLStatementNode);
    descriptor: (Lorg/antlr/v4/runtime/Token;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token whileToken
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode conditionNode
        start local 3 // com.oracle.truffle.sl.nodes.SLStatementNode bodyNode
         0: .line 292
            aload 2 /* conditionNode */
            ifnull 1
            aload 3 /* bodyNode */
            ifnonnull 2
         1: .line 293
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 296
      StackMap locals:
      StackMap stack:
            aload 2 /* conditionNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.addStatementTag:()V
         3: .line 297
            aload 1 /* whileToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            istore 4 /* start */
        start local 4 // int start
         4: .line 298
            aload 3 /* bodyNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.getSourceEndIndex:()I
            istore 5 /* end */
        start local 5 // int end
         5: .line 299
            new com.oracle.truffle.sl.nodes.controlflow.SLWhileNode
            dup
            aload 2 /* conditionNode */
            aload 3 /* bodyNode */
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLWhileNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
            astore 6 /* whileNode */
        start local 6 // com.oracle.truffle.sl.nodes.controlflow.SLWhileNode whileNode
         6: .line 300
            aload 6 /* whileNode */
            iload 4 /* start */
            iload 5 /* end */
            iload 4 /* start */
            isub
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLWhileNode.setSourceSection:(II)V
         7: .line 301
            aload 6 /* whileNode */
            areturn
        end local 6 // com.oracle.truffle.sl.nodes.controlflow.SLWhileNode whileNode
        end local 5 // int end
        end local 4 // int start
        end local 3 // com.oracle.truffle.sl.nodes.SLStatementNode bodyNode
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode conditionNode
        end local 1 // org.antlr.v4.runtime.Token whileToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    8     0           this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    8     1     whileToken  Lorg/antlr/v4/runtime/Token;
            0    8     2  conditionNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            0    8     3       bodyNode  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            4    8     4          start  I
            5    8     5            end  I
            6    8     6      whileNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLWhileNode;
    MethodParameters:
               Name  Flags
      whileToken     
      conditionNode  
      bodyNode       

  public com.oracle.truffle.sl.nodes.SLStatementNode createIf(org.antlr.v4.runtime.Token, com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLStatementNode, com.oracle.truffle.sl.nodes.SLStatementNode);
    descriptor: (Lorg/antlr/v4/runtime/Token;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=5
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token ifToken
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode conditionNode
        start local 3 // com.oracle.truffle.sl.nodes.SLStatementNode thenPartNode
        start local 4 // com.oracle.truffle.sl.nodes.SLStatementNode elsePartNode
         0: .line 315
            aload 2 /* conditionNode */
            ifnull 1
            aload 3 /* thenPartNode */
            ifnonnull 2
         1: .line 316
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 319
      StackMap locals:
      StackMap stack:
            aload 2 /* conditionNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.addStatementTag:()V
         3: .line 320
            aload 1 /* ifToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            istore 5 /* start */
        start local 5 // int start
         4: .line 321
            aload 4 /* elsePartNode */
            ifnonnull 5
            aload 3 /* thenPartNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.getSourceEndIndex:()I
            goto 6
      StackMap locals: int
      StackMap stack:
         5: aload 4 /* elsePartNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.getSourceEndIndex:()I
      StackMap locals:
      StackMap stack: int
         6: istore 6 /* end */
        start local 6 // int end
         7: .line 322
            new com.oracle.truffle.sl.nodes.controlflow.SLIfNode
            dup
            aload 2 /* conditionNode */
            aload 3 /* thenPartNode */
            aload 4 /* elsePartNode */
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLIfNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lcom/oracle/truffle/sl/nodes/SLStatementNode;)V
            astore 7 /* ifNode */
        start local 7 // com.oracle.truffle.sl.nodes.controlflow.SLIfNode ifNode
         8: .line 323
            aload 7 /* ifNode */
            iload 5 /* start */
            iload 6 /* end */
            iload 5 /* start */
            isub
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLIfNode.setSourceSection:(II)V
         9: .line 324
            aload 7 /* ifNode */
            areturn
        end local 7 // com.oracle.truffle.sl.nodes.controlflow.SLIfNode ifNode
        end local 6 // int end
        end local 5 // int start
        end local 4 // com.oracle.truffle.sl.nodes.SLStatementNode elsePartNode
        end local 3 // com.oracle.truffle.sl.nodes.SLStatementNode thenPartNode
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode conditionNode
        end local 1 // org.antlr.v4.runtime.Token ifToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0   10     1        ifToken  Lorg/antlr/v4/runtime/Token;
            0   10     2  conditionNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            0   10     3   thenPartNode  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            0   10     4   elsePartNode  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            4   10     5          start  I
            7   10     6            end  I
            8   10     7         ifNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLIfNode;
    MethodParameters:
               Name  Flags
      ifToken        
      conditionNode  
      thenPartNode   
      elsePartNode   

  public com.oracle.truffle.sl.nodes.SLStatementNode createReturn(org.antlr.v4.runtime.Token, com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lorg/antlr/v4/runtime/Token;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=6, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token t
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode valueNode
         0: .line 335
            aload 1 /* t */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            istore 3 /* start */
        start local 3 // int start
         1: .line 336
            aload 2 /* valueNode */
            ifnonnull 2
            aload 1 /* t */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            goto 3
      StackMap locals: int
      StackMap stack:
         2: aload 2 /* valueNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.getSourceEndIndex:()I
            iload 3 /* start */
            isub
      StackMap locals:
      StackMap stack: int
         3: istore 4 /* length */
        start local 4 // int length
         4: .line 337
            new com.oracle.truffle.sl.nodes.controlflow.SLReturnNode
            dup
            aload 2 /* valueNode */
            invokespecial com.oracle.truffle.sl.nodes.controlflow.SLReturnNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)V
            astore 5 /* returnNode */
        start local 5 // com.oracle.truffle.sl.nodes.controlflow.SLReturnNode returnNode
         5: .line 338
            aload 5 /* returnNode */
            iload 3 /* start */
            iload 4 /* length */
            invokevirtual com.oracle.truffle.sl.nodes.controlflow.SLReturnNode.setSourceSection:(II)V
         6: .line 339
            aload 5 /* returnNode */
            areturn
        end local 5 // com.oracle.truffle.sl.nodes.controlflow.SLReturnNode returnNode
        end local 4 // int length
        end local 3 // int start
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode valueNode
        end local 1 // org.antlr.v4.runtime.Token t
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    7     1           t  Lorg/antlr/v4/runtime/Token;
            0    7     2   valueNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            1    7     3       start  I
            4    7     4      length  I
            5    7     5  returnNode  Lcom/oracle/truffle/sl/nodes/controlflow/SLReturnNode;
    MethodParameters:
           Name  Flags
      t          
      valueNode  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createBinary(org.antlr.v4.runtime.Token, com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lorg/antlr/v4/runtime/Token;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 356
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tSLUnboxNodeGen cannot be resolved\n\tSLUnboxNodeGen cannot be resolved\n\tSLAddNodeGen cannot be resolved\n\tSLMulNodeGen cannot be resolved\n\tSLDivNodeGen cannot be resolved\n\tSLSubNodeGen cannot be resolved\n\tSLLessThanNodeGen cannot be resolved\n\tSLLessOrEqualNodeGen cannot be resolved\n\tSLLogicalNotNodeGen cannot be resolved\n\tSLLessOrEqualNodeGen cannot be resolved\n\tSLLogicalNotNodeGen cannot be resolved\n\tSLLessThanNodeGen cannot be resolved\n\tSLEqualNodeGen cannot be resolved\n\tSLLogicalNotNodeGen cannot be resolved\n\tSLEqualNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    MethodParameters:
           Name  Flags
      opToken    
      leftNode   
      rightNode  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createCall(com.oracle.truffle.sl.nodes.SLExpressionNode, java.util.List<com.oracle.truffle.sl.nodes.SLExpressionNode>, org.antlr.v4.runtime.Token);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Ljava/util/List;Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode functionNode
        start local 2 // java.util.List parameterNodes
        start local 3 // org.antlr.v4.runtime.Token finalToken
         0: .line 419
            aload 1 /* functionNode */
            ifnull 1
            aload 2 /* parameterNodes */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.containsNull:(Ljava/util/List;)Z
            ifeq 2
         1: .line 420
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 423
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.sl.nodes.expression.SLInvokeNode
            dup
            aload 1 /* functionNode */
            aload 2 /* parameterNodes */
            aload 2 /* parameterNodes */
            invokeinterface java.util.List.size:()I
            anewarray com.oracle.truffle.sl.nodes.SLExpressionNode
            invokeinterface java.util.List.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast com.oracle.truffle.sl.nodes.SLExpressionNode[]
            invokespecial com.oracle.truffle.sl.nodes.expression.SLInvokeNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;[Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)V
            astore 4 /* result */
        start local 4 // com.oracle.truffle.sl.nodes.SLExpressionNode result
         3: .line 425
            aload 1 /* functionNode */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.getSourceCharIndex:()I
            istore 5 /* startPos */
        start local 5 // int startPos
         4: .line 426
            aload 3 /* finalToken */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            aload 3 /* finalToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iadd
            istore 6 /* endPos */
        start local 6 // int endPos
         5: .line 427
            aload 4 /* result */
            iload 5 /* startPos */
            iload 6 /* endPos */
            iload 5 /* startPos */
            isub
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.setSourceSection:(II)V
         6: .line 428
            aload 4 /* result */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.addExpressionTag:()V
         7: .line 430
            aload 4 /* result */
            areturn
        end local 6 // int endPos
        end local 5 // int startPos
        end local 4 // com.oracle.truffle.sl.nodes.SLExpressionNode result
        end local 3 // org.antlr.v4.runtime.Token finalToken
        end local 2 // java.util.List parameterNodes
        end local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode functionNode
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    8     1    functionNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            0    8     2  parameterNodes  Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLExpressionNode;>;
            0    8     3      finalToken  Lorg/antlr/v4/runtime/Token;
            3    8     4          result  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            4    8     5        startPos  I
            5    8     6          endPos  I
    Signature: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Ljava/util/List<Lcom/oracle/truffle/sl/nodes/SLExpressionNode;>;Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    MethodParameters:
                Name  Flags
      functionNode    
      parameterNodes  
      finalToken      

  public com.oracle.truffle.sl.nodes.SLExpressionNode createAssignment(com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode nameNode
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode valueNode
         0: .line 441
            aload 0 /* this */
            aload 1 /* nameNode */
            aload 2 /* valueNode */
            aconst_null
            invokevirtual com.oracle.truffle.sl.parser.SLNodeFactory.createAssignment:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Ljava/lang/Integer;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            areturn
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode valueNode
        end local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode nameNode
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    1     1   nameNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            0    1     2  valueNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    MethodParameters:
           Name  Flags
      nameNode   
      valueNode  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createAssignment(com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode, java.lang.Integer);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Ljava/lang/Integer;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 464
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tSLWriteLocalVariableNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    MethodParameters:
               Name  Flags
      nameNode       
      valueNode      
      argumentIndex  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createRead(com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 501
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tSLReadLocalVariableNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    MethodParameters:
          Name  Flags
      nameNode  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createStringLiteral(org.antlr.v4.runtime.Token, boolean);
    descriptor: (Lorg/antlr/v4/runtime/Token;Z)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token literalToken
        start local 2 // boolean removeQuotes
         0: .line 513
            aload 1 /* literalToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            astore 3 /* literal */
        start local 3 // java.lang.String literal
         1: .line 514
            iload 2 /* removeQuotes */
            ifeq 5
         2: .line 515
            getstatic com.oracle.truffle.sl.parser.SLNodeFactory.$assertionsDisabled:Z
            ifne 4
            aload 3 /* literal */
            invokevirtual java.lang.String.length:()I
            iconst_2
            if_icmplt 3
            aload 3 /* literal */
            ldc "\""
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
            aload 3 /* literal */
            ldc "\""
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 4
      StackMap locals: java.lang.String
      StackMap stack:
         3: new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 516
      StackMap locals:
      StackMap stack:
            aload 3 /* literal */
            iconst_1
            aload 3 /* literal */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* literal */
         5: .line 519
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode
            dup
            aload 3 /* literal */
            invokevirtual java.lang.String.intern:()Ljava/lang/String;
            invokespecial com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode.<init>:(Ljava/lang/String;)V
            astore 4 /* result */
        start local 4 // com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode result
         6: .line 520
            aload 4 /* result */
            aload 1 /* literalToken */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.srcFromToken:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
         7: .line 521
            aload 4 /* result */
            invokevirtual com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode.addExpressionTag:()V
         8: .line 522
            aload 4 /* result */
            areturn
        end local 4 // com.oracle.truffle.sl.nodes.expression.SLStringLiteralNode result
        end local 3 // java.lang.String literal
        end local 2 // boolean removeQuotes
        end local 1 // org.antlr.v4.runtime.Token literalToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0          this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    9     1  literalToken  Lorg/antlr/v4/runtime/Token;
            0    9     2  removeQuotes  Z
            1    9     3       literal  Ljava/lang/String;
            6    9     4        result  Lcom/oracle/truffle/sl/nodes/expression/SLStringLiteralNode;
    MethodParameters:
              Name  Flags
      literalToken  
      removeQuotes  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createNumericLiteral(org.antlr.v4.runtime.Token);
    descriptor: (Lorg/antlr/v4/runtime/Token;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // org.antlr.v4.runtime.Token literalToken
         0: .line 529
            new com.oracle.truffle.sl.nodes.expression.SLLongLiteralNode
            dup
            aload 1 /* literalToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokestatic java.lang.Long.parseLong:(Ljava/lang/String;)J
            invokespecial com.oracle.truffle.sl.nodes.expression.SLLongLiteralNode.<init>:(J)V
            astore 2 /* result */
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode result
         1: .line 530
            goto 4
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode result
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
         2: pop
         3: .line 532
            new com.oracle.truffle.sl.nodes.expression.SLBigIntegerLiteralNode
            dup
            new java.math.BigInteger
            dup
            aload 1 /* literalToken */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;)V
            invokespecial com.oracle.truffle.sl.nodes.expression.SLBigIntegerLiteralNode.<init>:(Ljava/math/BigInteger;)V
            astore 2 /* result */
        start local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode result
         4: .line 534
      StackMap locals: com.oracle.truffle.sl.nodes.SLExpressionNode
      StackMap stack:
            aload 2 /* result */
            aload 1 /* literalToken */
            invokestatic com.oracle.truffle.sl.parser.SLNodeFactory.srcFromToken:(Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
         5: .line 535
            aload 2 /* result */
            invokevirtual com.oracle.truffle.sl.nodes.SLExpressionNode.addExpressionTag:()V
         6: .line 536
            aload 2 /* result */
            areturn
        end local 2 // com.oracle.truffle.sl.nodes.SLExpressionNode result
        end local 1 // org.antlr.v4.runtime.Token literalToken
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    7     1  literalToken  Lorg/antlr/v4/runtime/Token;
            1    2     2        result  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            4    7     2        result  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.NumberFormatException
    MethodParameters:
              Name  Flags
      literalToken  

  public com.oracle.truffle.sl.nodes.SLExpressionNode createParenExpression(com.oracle.truffle.sl.nodes.SLExpressionNode, int, int);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;II)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
        start local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode expressionNode
        start local 2 // int start
        start local 3 // int length
         0: .line 540
            aload 1 /* expressionNode */
            ifnonnull 2
         1: .line 541
            aconst_null
            areturn
         2: .line 544
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.sl.nodes.expression.SLParenExpressionNode
            dup
            aload 1 /* expressionNode */
            invokespecial com.oracle.truffle.sl.nodes.expression.SLParenExpressionNode.<init>:(Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)V
            astore 4 /* result */
        start local 4 // com.oracle.truffle.sl.nodes.expression.SLParenExpressionNode result
         3: .line 545
            aload 4 /* result */
            iload 2 /* start */
            iload 3 /* length */
            invokevirtual com.oracle.truffle.sl.nodes.expression.SLParenExpressionNode.setSourceSection:(II)V
         4: .line 546
            aload 4 /* result */
            areturn
        end local 4 // com.oracle.truffle.sl.nodes.expression.SLParenExpressionNode result
        end local 3 // int length
        end local 2 // int start
        end local 1 // com.oracle.truffle.sl.nodes.SLExpressionNode expressionNode
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
            0    5     1  expressionNode  Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
            0    5     2           start  I
            0    5     3          length  I
            3    5     4          result  Lcom/oracle/truffle/sl/nodes/expression/SLParenExpressionNode;
    MethodParameters:
                Name  Flags
      expressionNode  
      start           
      length          

  public com.oracle.truffle.sl.nodes.SLExpressionNode createReadProperty(com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 562
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tSLReadPropertyNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    MethodParameters:
              Name  Flags
      receiverNode  
      nameNode      

  public com.oracle.truffle.sl.nodes.SLExpressionNode createWriteProperty(com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode, com.oracle.truffle.sl.nodes.SLExpressionNode);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;Lcom/oracle/truffle/sl/nodes/SLExpressionNode;)Lcom/oracle/truffle/sl/nodes/SLExpressionNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
         0: .line 586
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tSLWritePropertyNodeGen cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.parser.SLNodeFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/parser/SLNodeFactory;
    MethodParameters:
              Name  Flags
      receiverNode  
      nameNode      
      valueNode     

  private static void srcFromToken(com.oracle.truffle.sl.nodes.SLStatementNode, org.antlr.v4.runtime.Token);
    descriptor: (Lcom/oracle/truffle/sl/nodes/SLStatementNode;Lorg/antlr/v4/runtime/Token;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode node
        start local 1 // org.antlr.v4.runtime.Token token
         0: .line 600
            aload 0 /* node */
            aload 1 /* token */
            invokeinterface org.antlr.v4.runtime.Token.getStartIndex:()I
            aload 1 /* token */
            invokeinterface org.antlr.v4.runtime.Token.getText:()Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.setSourceSection:(II)V
         1: .line 601
            return
        end local 1 // org.antlr.v4.runtime.Token token
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode node
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   node  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            0    2     1  token  Lorg/antlr/v4/runtime/Token;
    MethodParameters:
       Name  Flags
      node   
      token  

  private static boolean containsNull(java.util.List<?>);
    descriptor: (Ljava/util/List;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // java.util.List list
         0: .line 607
            aload 0 /* list */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 4
      StackMap locals: java.util.List top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            astore 1 /* e */
        start local 1 // java.lang.Object e
         2: .line 608
            aload 1 /* e */
            ifnonnull 4
         3: .line 609
            iconst_1
            ireturn
        end local 1 // java.lang.Object e
         4: .line 607
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 612
            iconst_0
            ireturn
        end local 0 // java.util.List list
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  list  Ljava/util/List<*>;
            2    4     1     e  Ljava/lang/Object;
    Signature: (Ljava/util/List<*>;)Z
    MethodParameters:
      Name  Flags
      list  
}
SourceFile: "SLNodeFactory.java"
NestMembers:
  com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope
InnerClasses:
  LexicalScope = com.oracle.truffle.sl.parser.SLNodeFactory$LexicalScope of com.oracle.truffle.sl.parser.SLNodeFactory