public abstract class com.oracle.truffle.sl.nodes.SLStatementNode extends com.oracle.truffle.sl.nodes.local.SLScopedNode implements com.oracle.truffle.api.instrumentation.InstrumentableNode
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.sl.nodes.SLStatementNode
  super_class: com.oracle.truffle.sl.nodes.local.SLScopedNode
{
  private static final int NO_SOURCE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  private static final int UNAVAILABLE_SOURCE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -2

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

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

  private boolean hasStatementTag;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private boolean hasRootTag;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  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 64
            ldc Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            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.nodes.SLStatementNode.$assertionsDisabled:Z
         3: .line 67
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 64
            aload 0 /* this */
            invokespecial com.oracle.truffle.sl.nodes.local.SLScopedNode.<init>:()V
         1: .line 69
            aload 0 /* this */
            iconst_m1
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
         2: .line 64
            return
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final com.oracle.truffle.api.source.SourceSection getSourceSection();
    descriptor: ()Lcom/oracle/truffle/api/source/SourceSection;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 88
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            iconst_m1
            if_icmpne 2
         1: .line 90
            aconst_null
            areturn
         2: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            astore 1 /* rootNode */
        start local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
         3: .line 93
            aload 1 /* rootNode */
            ifnonnull 5
         4: .line 95
            aconst_null
            areturn
         5: .line 97
      StackMap locals: com.oracle.truffle.api.nodes.RootNode
      StackMap stack:
            aload 1 /* rootNode */
            invokevirtual com.oracle.truffle.api.nodes.RootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 2 /* rootSourceSection */
        start local 2 // com.oracle.truffle.api.source.SourceSection rootSourceSection
         6: .line 98
            aload 2 /* rootSourceSection */
            ifnonnull 8
         7: .line 99
            aconst_null
            areturn
         8: .line 101
      StackMap locals: com.oracle.truffle.api.source.SourceSection
      StackMap stack:
            aload 2 /* rootSourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            astore 3 /* source */
        start local 3 // com.oracle.truffle.api.source.Source source
         9: .line 102
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            bipush -2
            if_icmpne 13
        10: .line 103
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.hasRootTag:Z
            ifeq 12
            aload 2 /* rootSourceSection */
            invokevirtual com.oracle.truffle.api.source.SourceSection.isAvailable:()Z
            ifne 12
        11: .line 104
            aload 2 /* rootSourceSection */
            areturn
        12: .line 106
      StackMap locals: com.oracle.truffle.api.source.Source
      StackMap stack:
            aload 3 /* source */
            invokevirtual com.oracle.truffle.api.source.Source.createUnavailableSection:()Lcom/oracle/truffle/api/source/SourceSection;
            areturn
        13: .line 109
      StackMap locals:
      StackMap stack:
            aload 3 /* source */
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceLength:I
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(II)Lcom/oracle/truffle/api/source/SourceSection;
            areturn
        end local 3 // com.oracle.truffle.api.source.Source source
        end local 2 // com.oracle.truffle.api.source.SourceSection rootSourceSection
        end local 1 // com.oracle.truffle.api.nodes.RootNode rootNode
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            3   14     1           rootNode  Lcom/oracle/truffle/api/nodes/RootNode;
            6   14     2  rootSourceSection  Lcom/oracle/truffle/api/source/SourceSection;
            9   14     3             source  Lcom/oracle/truffle/api/source/Source;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  public final boolean hasSource();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 114
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            iconst_m1
            if_icmpeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final boolean isInstrumentable();
    descriptor: ()Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 118
            aload 0 /* this */
            invokevirtual com.oracle.truffle.sl.nodes.SLStatementNode.hasSource:()Z
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final int getSourceCharIndex();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 122
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final int getSourceEndIndex();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 126
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceLength:I
            iadd
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final int getSourceLength();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 130
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceLength:I
            ireturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final void setSourceSection(int, int);
    descriptor: (II)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
        start local 1 // int charIndex
        start local 2 // int length
         0: .line 135
            getstatic com.oracle.truffle.sl.nodes.SLStatementNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            iconst_m1
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            ldc "source must only be set once"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 136
      StackMap locals:
      StackMap stack:
            iload 1 /* charIndex */
            ifge 3
         2: .line 137
            new java.lang.IllegalArgumentException
            dup
            ldc "charIndex < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 138
      StackMap locals:
      StackMap stack:
            iload 2 /* length */
            ifge 5
         4: .line 139
            new java.lang.IllegalArgumentException
            dup
            ldc "length < 0"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 141
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* charIndex */
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
         6: .line 142
            aload 0 /* this */
            iload 2 /* length */
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceLength:I
         7: .line 143
            return
        end local 2 // int length
        end local 1 // int charIndex
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            0    8     1  charIndex  I
            0    8     2     length  I
    MethodParameters:
           Name  Flags
      charIndex  
      length     

  public final void setUnavailableSourceSection();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 146
            getstatic com.oracle.truffle.sl.nodes.SLStatementNode.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
            iconst_m1
            if_icmpeq 1
            new java.lang.AssertionError
            dup
            ldc "source must only be set once"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            bipush -2
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.sourceCharIndex:I
         2: .line 148
            return
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public boolean hasTag(java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
        start local 1 // java.lang.Class tag
         0: .line 151
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            if_acmpne 2
         1: .line 152
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.hasStatementTag:Z
            ireturn
         2: .line 153
      StackMap locals:
      StackMap stack:
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            if_acmpeq 3
            aload 1 /* tag */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootBodyTag;
            if_acmpne 4
         3: .line 154
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.sl.nodes.SLStatementNode.hasRootTag:Z
            ireturn
         4: .line 156
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
            0    5     1   tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;)Z
    MethodParameters:
      Name  Flags
      tag   

  public com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode createWrapper(com.oracle.truffle.api.instrumentation.ProbeNode);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/ProbeNode;)Lcom/oracle/truffle/api/instrumentation/InstrumentableNode$WrapperNode;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 160
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tSLStatementNodeWrapper cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;
    MethodParameters:
       Name  Flags
      probe  

  public abstract void executeVoid(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
       Name  Flags
      frame  

  public final void addStatementTag();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 172
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.hasStatementTag:Z
         1: .line 173
            return
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public final void addRootTag();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 180
            aload 0 /* this */
            iconst_1
            putfield com.oracle.truffle.sl.nodes.SLStatementNode.hasRootTag:Z
         1: .line 181
            return
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
         0: .line 185
            aload 0 /* this */
            invokestatic com.oracle.truffle.sl.nodes.SLStatementNode.formatSourceSection:(Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.sl.nodes.SLStatementNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/sl/nodes/SLStatementNode;

  public static java.lang.String formatSourceSection(com.oracle.truffle.api.nodes.Node);
    descriptor: (Lcom/oracle/truffle/api/nodes/Node;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.nodes.Node node
         0: .line 197
            aload 0 /* node */
            ifnonnull 2
         1: .line 198
            ldc "<unknown>"
            areturn
         2: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 1 /* section */
        start local 1 // com.oracle.truffle.api.source.SourceSection section
         3: .line 201
            iconst_0
            istore 2 /* estimated */
        start local 2 // boolean estimated
         4: .line 202
            aload 1 /* section */
            ifnonnull 7
         5: .line 203
            aload 0 /* node */
            invokevirtual com.oracle.truffle.api.nodes.Node.getEncapsulatingSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            astore 1 /* section */
         6: .line 204
            iconst_1
            istore 2 /* estimated */
         7: .line 207
      StackMap locals: com.oracle.truffle.api.source.SourceSection int
      StackMap stack:
            aload 1 /* section */
            ifnull 8
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            ifnonnull 9
         8: .line 208
      StackMap locals:
      StackMap stack:
            ldc "<unknown source>"
            areturn
         9: .line 210
      StackMap locals:
      StackMap stack:
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            invokevirtual com.oracle.truffle.api.source.Source.getName:()Ljava/lang/String;
            astore 3 /* sourceName */
        start local 3 // java.lang.String sourceName
        10: .line 211
            aload 1 /* section */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getStartLine:()I
            istore 4 /* startLine */
        start local 4 // int startLine
        11: .line 212
            ldc "%s:%d%s"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* sourceName */
            aastore
            dup
            iconst_1
            iload 4 /* startLine */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 2 /* estimated */
            ifeq 12
            ldc "~"
            goto 13
      StackMap locals: com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection int java.lang.String int
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int
        12: ldc ""
      StackMap locals: com.oracle.truffle.api.nodes.Node com.oracle.truffle.api.source.SourceSection int java.lang.String int
      StackMap stack: java.lang.String java.lang.Object[] java.lang.Object[] int java.lang.String
        13: aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 4 // int startLine
        end local 3 // java.lang.String sourceName
        end local 2 // boolean estimated
        end local 1 // com.oracle.truffle.api.source.SourceSection section
        end local 0 // com.oracle.truffle.api.nodes.Node node
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   14     0        node  Lcom/oracle/truffle/api/nodes/Node;
            3   14     1     section  Lcom/oracle/truffle/api/source/SourceSection;
            4   14     2   estimated  Z
           10   14     3  sourceName  Ljava/lang/String;
           11   14     4   startLine  I
    MethodParameters:
      Name  Flags
      node  
}
SourceFile: "SLStatementNode.java"
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract WrapperNode = com.oracle.truffle.api.instrumentation.InstrumentableNode$WrapperNode of com.oracle.truffle.api.instrumentation.InstrumentableNode
  public final RootBodyTag = com.oracle.truffle.api.instrumentation.StandardTags$RootBodyTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final RootTag = com.oracle.truffle.api.instrumentation.StandardTags$RootTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final StatementTag = com.oracle.truffle.api.instrumentation.StandardTags$StatementTag of com.oracle.truffle.api.instrumentation.StandardTags
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.NodeInfo(language = "SL", description = "The abstract base node for all SL statements")
    RuntimeInvisibleAnnotations: 
      com.oracle.truffle.api.instrumentation.GenerateWrapper()