class com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode extends com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode
  super_class: com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode
{
  private final com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage language;
    descriptor: Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

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

  void <init>(com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage, java.lang.String, com.oracle.truffle.api.source.SourceSection, com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[]);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;Ljava/lang/String;Lcom/oracle/truffle/api/source/SourceSection;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=8, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage lang
        start local 2 // java.lang.String identifier
        start local 3 // com.oracle.truffle.api.source.SourceSection source
        start local 4 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
         0: .line 1451
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode.<init>:()V
         1: .line 1452
            aload 0 /* this */
            aload 1 /* lang */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.language:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;
         2: .line 1453
            aload 0 /* this */
            aload 2 /* identifier */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.identifier:Ljava/lang/String;
         3: .line 1454
            aload 3 /* source */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            astore 5 /* code */
        start local 5 // java.lang.String code
         4: .line 1455
            aload 5 /* code */
            bipush 40
            invokevirtual java.lang.String.indexOf:(I)I
            iconst_1
            iadd
            istore 6 /* index */
        start local 6 // int index
         5: .line 1456
            aload 5 /* code */
            bipush 44
            iload 6 /* index */
            invokevirtual java.lang.String.indexOf:(II)I
            iconst_1
            iadd
            istore 6 /* index */
         6: .line 1457
            aload 3 /* source */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getSource:()Lcom/oracle/truffle/api/source/Source;
            aload 3 /* source */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharIndex:()I
            iload 6 /* index */
            iadd
            aload 3 /* source */
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharLength:()I
            iload 6 /* index */
            isub
            iconst_1
            isub
            invokevirtual com.oracle.truffle.api.source.Source.createSection:(II)Lcom/oracle/truffle/api/source/SourceSection;
            astore 7 /* functionSection */
        start local 7 // com.oracle.truffle.api.source.SourceSection functionSection
         7: .line 1458
            aload 0 /* this */
            invokestatic com.oracle.truffle.api.Truffle.getRuntime:()Lcom/oracle/truffle/api/TruffleRuntime;
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode
            dup
            aload 1 /* lang */
            aload 2 /* identifier */
            aload 7 /* functionSection */
            aload 4 /* children */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;Ljava/lang/String;Lcom/oracle/truffle/api/source/SourceSection;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;)V
            invokeinterface com.oracle.truffle.api.TruffleRuntime.createCallTarget:(Lcom/oracle/truffle/api/nodes/RootNode;)Lcom/oracle/truffle/api/RootCallTarget;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.target:Lcom/oracle/truffle/api/RootCallTarget;
         8: .line 1459
            return
        end local 7 // com.oracle.truffle.api.source.SourceSection functionSection
        end local 6 // int index
        end local 5 // java.lang.String code
        end local 4 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
        end local 3 // com.oracle.truffle.api.source.SourceSection source
        end local 2 // java.lang.String identifier
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage lang
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0             this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$DefineNode;
            0    9     1             lang  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;
            0    9     2       identifier  Ljava/lang/String;
            0    9     3           source  Lcom/oracle/truffle/api/source/SourceSection;
            0    9     4         children  [Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            4    9     5             code  Ljava/lang/String;
            5    9     6            index  I
            7    9     7  functionSection  Lcom/oracle/truffle/api/source/SourceSection;
    MethodParameters:
            Name  Flags
      lang        
      identifier  
      source      
      children    

  public boolean isInstrumentable();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
         0: .line 1463
            iconst_0
            ireturn
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$DefineNode;

  public java.lang.Object execute(com.oracle.truffle.api.frame.VirtualFrame);
    descriptor: (Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 1468
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.defineFunction:()V
         1: .line 1469
            getstatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$Null.INSTANCE:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$Null;
            areturn
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$DefineNode;
            0    2     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

  private void defineFunction();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
         0: .line 1474
            aload 0 /* this */
            ldc Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.lookupContextReference:(Ljava/lang/Class;)Lcom/oracle/truffle/api/TruffleLanguage$ContextReference;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$ContextReference.get:()Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentContext
            astore 1 /* context */
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentContext context
         1: .line 1475
            aload 1 /* context */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentContext.callFunctions:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$FunctionsObject;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$FunctionsObject.callTargets:Ljava/util/Map;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.identifier:Ljava/lang/String;
            invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
            ifeq 4
         2: .line 1476
            aload 1 /* context */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentContext.callFunctions:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$FunctionsObject;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$FunctionsObject.callTargets:Ljava/util/Map;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.identifier:Ljava/lang/String;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.target:Lcom/oracle/truffle/api/RootCallTarget;
            if_acmpeq 4
         3: .line 1477
            new java.lang.IllegalArgumentException
            dup
            ldc "Identifier redefinition not supported."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 1480
      StackMap locals: com.oracle.truffle.api.instrumentation.test.InstrumentContext
      StackMap stack:
            aload 1 /* context */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentContext.callFunctions:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$FunctionsObject;
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$FunctionsObject.callTargets:Ljava/util/Map;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.identifier:Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.target:Lcom/oracle/truffle/api/RootCallTarget;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 1481
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentContext context
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    6     0     this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$DefineNode;
            1    6     1  context  Lcom/oracle/truffle/api/instrumentation/test/InstrumentContext;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()

  protected com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode copyUninitialized(java.util.Set<java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>>);
    descriptor: (Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=10, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
        start local 1 // java.util.Set materializedTags
         0: .line 1485
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.target:Lcom/oracle/truffle/api/RootCallTarget;
            invokeinterface com.oracle.truffle.api.RootCallTarget.getRootNode:()Lcom/oracle/truffle/api/nodes/RootNode;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode
            astore 2 /* rootNode */
        start local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode rootNode
         1: .line 1486
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.language:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.identifier:Ljava/lang/String;
            aload 2 /* rootNode */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode.getSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            iconst_1
            anewarray com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode
            dup
            iconst_0
            aload 2 /* rootNode */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode.functionRoot:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$InstrumentedNode;
            aload 1 /* materializedTags */
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.cloneUninitialized:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;Ljava/util/Set;)Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            aastore
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage;Ljava/lang/String;Lcom/oracle/truffle/api/source/SourceSection;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;)V
            areturn
        end local 2 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode rootNode
        end local 1 // java.util.Set materializedTags
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    2     0              this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$DefineNode;
            0    2     1  materializedTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
            1    2     2          rootNode  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$InstrumentationTestRootNode;
    Signature: (Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;)Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
    MethodParameters:
                  Name  Flags
      materializedTags  
}
SourceFile: "InstrumentationTestLanguage.java"
NestHost: com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public abstract ContextReference = com.oracle.truffle.api.TruffleLanguage$ContextReference of com.oracle.truffle.api.TruffleLanguage
  public abstract BaseNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
  DefineNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$DefineNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
  FunctionsObject = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$FunctionsObject of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
  private InstrumentationTestRootNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentationTestRootNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
  public abstract InstrumentedNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage
  public final Null = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$Null of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage