final class com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor
  super_class: java.lang.Object
{
  private com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage lang;
    descriptor: Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;
    flags: (0x0002) ACC_PRIVATE

  private final char[] tags;
    descriptor: [C
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.oracle.truffle.api.source.Source source;
    descriptor: Lcom/oracle/truffle/api/source/Source;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int startPos;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private java.util.List<com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor> children;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;>;

  private volatile com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestNode node;
    descriptor: Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  void <init>(com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage, java.lang.String, com.oracle.truffle.api.source.Source, int, int);
    descriptor: (Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;Ljava/lang/String;Lcom/oracle/truffle/api/source/Source;II)V
    flags: (0x0000) 
    Code:
      stack=2, locals=6, args_size=6
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
        start local 1 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage lang
        start local 2 // java.lang.String tags
        start local 3 // com.oracle.truffle.api.source.Source source
        start local 4 // int startPos
        start local 5 // int endPos
         0: .line 265
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 266
            aload 0 /* this */
            aload 1 /* lang */
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.lang:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;
         2: .line 267
            aload 0 /* this */
            aload 2 /* tags */
            invokevirtual java.lang.String.toCharArray:()[C
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.tags:[C
         3: .line 268
            aload 0 /* this */
            aload 3 /* source */
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.source:Lcom/oracle/truffle/api/source/Source;
         4: .line 269
            aload 0 /* this */
            iload 4 /* startPos */
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.startPos:I
         5: .line 270
            aload 0 /* this */
            iload 5 /* endPos */
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.endPos:I
         6: .line 271
            return
        end local 5 // int endPos
        end local 4 // int startPos
        end local 3 // com.oracle.truffle.api.source.Source source
        end local 2 // java.lang.String tags
        end local 1 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage lang
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
            0    7     1      lang  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;
            0    7     2      tags  Ljava/lang/String;
            0    7     3    source  Lcom/oracle/truffle/api/source/Source;
            0    7     4  startPos  I
            0    7     5    endPos  I
    MethodParameters:
          Name  Flags
      lang      
      tags      
      source    
      startPos  
      endPos    

  private void setEndPos(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
        start local 1 // int pos
         0: .line 274
            aload 0 /* this */
            iload 1 /* pos */
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.endPos:I
         1: .line 275
            return
        end local 1 // int pos
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
            0    2     1   pos  I
    MethodParameters:
      Name  Flags
      pos   

  void addChild(com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor);
    descriptor: (Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
        start local 1 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor child
         0: .line 278
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.children:Ljava/util/List;
            ifnonnull 2
         1: .line 279
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.children:Ljava/util/List;
         2: .line 281
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.children:Ljava/util/List;
            aload 1 /* child */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         3: .line 282
            return
        end local 1 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor child
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
            0    4     1  child  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
    MethodParameters:
       Name  Flags
      child  

  com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestNode getNode();
    descriptor: ()Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
    flags: (0x0000) 
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
         0: .line 285
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.node:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
            ifnonnull 12
         1: .line 286
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         2: .line 287
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.node:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
            ifnonnull 8
         3: .line 288
            aload 0 /* this */
            bipush 70
            invokevirtual com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.hasTag:(C)Z
            ifeq 7
         4: .line 289
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestRootNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.lang:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestRootNode.<init>:(Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            astore 2 /* taget */
        start local 2 // com.oracle.truffle.api.RootCallTarget taget
         5: .line 290
            aload 0 /* this */
            new com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$CallNode
            dup
            aload 2 /* taget */
            invokespecial com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$CallNode.<init>:(Lcom/oracle/truffle/api/CallTarget;)V
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.node:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
        end local 2 // com.oracle.truffle.api.RootCallTarget taget
         6: .line 291
            goto 8
         7: .line 292
      StackMap locals: com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor
      StackMap stack:
            aload 0 /* this */
            new com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$BaseNode
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$BaseNode.<init>:(Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;)V
            putfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.node:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
         8: .line 286
      StackMap locals:
      StackMap stack:
            aload 1
            monitorexit
         9: goto 12
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        12: .line 297
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.node:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$TestNode;
            areturn
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0   this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
            5    6     2  taget  Lcom/oracle/truffle/api/RootCallTarget;
      Exception table:
        from    to  target  type
           2     9      10  any
          10    11      10  any

  private boolean hasTag(char);
    descriptor: (C)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=6, args_size=2
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
        start local 1 // char c
         0: .line 302
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.tags:[C
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 5
      StackMap locals: com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor int top int int char[]
      StackMap stack:
         1: aload 5
            iload 3
            caload
            istore 2 /* t */
        start local 2 // char t
         2: .line 303
            iload 2 /* t */
            iload 1 /* c */
            if_icmpne 4
         3: .line 304
            iconst_1
            ireturn
        end local 2 // char t
         4: .line 302
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         5: iload 3
            iload 4
            if_icmplt 1
         6: .line 307
            iconst_0
            ireturn
        end local 1 // char c
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
            0    7     1     c  C
            2    4     2     t  C
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.nodes.ExplodeLoop()
    MethodParameters:
      Name  Flags
      c     

  private boolean isInstrumentable();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
         0: .line 311
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.tags:[C
            arraylength
            ifle 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;

  com.oracle.truffle.api.source.SourceSection getSourceSection();
    descriptor: ()Lcom/oracle/truffle/api/source/SourceSection;
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
         0: .line 315
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.source:Lcom/oracle/truffle/api/source/Source;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.startPos:I
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.endPos:I
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.startPos:I
            isub
            iconst_1
            iadd
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(II)Lcom/oracle/truffle/api/source/SourceSection;
            areturn
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
         0: .line 320
            new java.lang.StringBuilder
            dup
            ldc "NodeDescriptor("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            new java.lang.String
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.tags:[C
            invokespecial java.lang.String.<init>:([C)V
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " <"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.startPos:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " - "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.endPos:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ">)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;

  private com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor cloneShallow();
    descriptor: ()Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
         0: .line 324
            new com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.lang:Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;
            new java.lang.String
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.tags:[C
            invokespecial java.lang.String.<init>:([C)V
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.source:Lcom/oracle/truffle/api/source/Source;
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.startPos:I
            aload 0 /* this */
            getfield com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.endPos:I
            invokespecial com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor.<init>:(Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage;Ljava/lang/String;Lcom/oracle/truffle/api/source/Source;II)V
            areturn
        end local 0 // com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/debug/test/InstrumentablePositionsTestLanguage$NodeDescriptor;
}
SourceFile: "InstrumentablePositionsTestLanguage.java"
NestHost: com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage
InnerClasses:
  BaseNode = com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$BaseNode of com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage
  private final CallNode = com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$CallNode of com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage
  private final NodeDescriptor = com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$NodeDescriptor of com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage
  private abstract TestNode = com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestNode of com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage
  private final TestRootNode = com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage$TestRootNode of com.oracle.truffle.api.debug.test.InstrumentablePositionsTestLanguage