final class com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode extends com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode
  super_class: com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode
{
  private final java.lang.String name;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private com.oracle.truffle.api.frame.FrameSlot slot;
    descriptor: Lcom/oracle/truffle/api/frame/FrameSlot;
    flags: (0x0002) ACC_PRIVATE
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$CompilationFinal()

  final com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter;
    descriptor: Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    flags: (0x0010) ACC_FINAL

  private void <init>(java.lang.String, java.lang.String, com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[], com.oracle.truffle.api.instrumentation.AllocationReporter);
    descriptor: (Ljava/lang/String;Ljava/lang/String;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;Lcom/oracle/truffle/api/instrumentation/AllocationReporter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
        start local 1 // java.lang.String name
        start local 2 // java.lang.String identifier
        start local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
        start local 4 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
         0: .line 2387
            aload 0 /* this */
            aload 3 /* children */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode.<init>:([Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;)V
         1: .line 2388
            aload 0 /* this */
            aload 1 /* name */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.name:Ljava/lang/String;
         2: .line 2389
            aload 0 /* this */
            aload 2 /* identifier */
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage.parseIdent:(Ljava/lang/String;)Ljava/lang/Object;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
         3: .line 2390
            aload 0 /* this */
            aload 4 /* allocationReporter */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
         4: .line 2391
            return
        end local 4 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
        end local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
        end local 2 // java.lang.String identifier
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$VariableNode;
            0    5     1                name  Ljava/lang/String;
            0    5     2          identifier  Ljava/lang/String;
            0    5     3            children  [Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            0    5     4  allocationReporter  Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    MethodParameters:
                    Name  Flags
      name                
      identifier          
      children            
      allocationReporter  

  private void <init>(java.lang.String, java.lang.Object, com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[], com.oracle.truffle.api.instrumentation.AllocationReporter);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;Lcom/oracle/truffle/api/instrumentation/AllocationReporter;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Object value
        start local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
        start local 4 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
         0: .line 2394
            aload 0 /* this */
            aload 3 /* children */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode.<init>:([Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;)V
         1: .line 2395
            aload 0 /* this */
            aload 1 /* name */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.name:Ljava/lang/String;
         2: .line 2396
            aload 0 /* this */
            aload 2 /* value */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
         3: .line 2397
            aload 0 /* this */
            aload 4 /* allocationReporter */
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
         4: .line 2398
            return
        end local 4 // com.oracle.truffle.api.instrumentation.AllocationReporter allocationReporter
        end local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode[] children
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$VariableNode;
            0    5     1                name  Ljava/lang/String;
            0    5     2               value  Ljava/lang/Object;
            0    5     3            children  [Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            0    5     4  allocationReporter  Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
    MethodParameters:
                    Name  Flags
      name                
      value               
      children            
      allocationReporter  

  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=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
        start local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
         0: .line 2402
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationReporter.isActive:()Z
            ifeq 2
         1: .line 2404
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            aconst_null
            lconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.getValueSize:()J
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationReporter.onEnter:(Ljava/lang/Object;JJ)V
         2: .line 2406
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.slot:Lcom/oracle/truffle/api/frame/FrameSlot;
            ifnonnull 5
         3: .line 2407
            invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
         4: .line 2408
            aload 0 /* this */
            aload 1 /* frame */
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.getFrameDescriptor:()Lcom/oracle/truffle/api/frame/FrameDescriptor;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.name:Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.frame.FrameDescriptor.findOrAddFrameSlot:(Ljava/lang/Object;)Lcom/oracle/truffle/api/frame/FrameSlot;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.slot:Lcom/oracle/truffle/api/frame/FrameSlot;
         5: .line 2410
      StackMap locals:
      StackMap stack:
            aload 1 /* frame */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.slot:Lcom/oracle/truffle/api/frame/FrameSlot;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            invokeinterface com.oracle.truffle.api.frame.VirtualFrame.setObject:(Lcom/oracle/truffle/api/frame/FrameSlot;Ljava/lang/Object;)V
         6: .line 2411
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationReporter.isActive:()Z
            ifeq 8
         7: .line 2412
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            lconst_0
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.getValueSize:()J
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationReporter.onReturnValue:(Ljava/lang/Object;JJ)V
         8: .line 2414
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* frame */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$InstrumentedNode.execute:(Lcom/oracle/truffle/api/frame/VirtualFrame;)Ljava/lang/Object;
            pop
         9: .line 2415
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            areturn
        end local 1 // com.oracle.truffle.api.frame.VirtualFrame frame
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$VariableNode;
            0   10     1  frame  Lcom/oracle/truffle/api/frame/VirtualFrame;
    MethodParameters:
       Name  Flags
      frame  

  private long getValueSize();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
         0: .line 2419
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Byte
            ifne 1
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Boolean
            ifeq 2
         1: .line 2420
      StackMap locals:
      StackMap stack:
            lconst_1
            lreturn
         2: .line 2422
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Character
            ifeq 4
         3: .line 2423
            ldc 2
            lreturn
         4: .line 2425
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Short
            ifeq 6
         5: .line 2426
            ldc 2
            lreturn
         6: .line 2428
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Integer
            ifne 7
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Float
            ifeq 8
         7: .line 2429
      StackMap locals:
      StackMap stack:
            ldc 4
            lreturn
         8: .line 2431
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Long
            ifne 9
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            instanceof java.lang.Double
            ifeq 10
         9: .line 2432
      StackMap locals:
      StackMap stack:
            ldc 8
            lreturn
        10: .line 2434
      StackMap locals:
      StackMap stack:
            ldc -9223372036854775808
            lreturn
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$VariableNode;

  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=6, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
        start local 1 // java.util.Set materializedTags
         0: .line 2439
            new com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode
            dup
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.name:Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.value:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.children:[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            aload 1 /* materializedTags */
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.cloneUninitialized:([Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;Ljava/util/Set;)[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.allocationReporter:Lcom/oracle/truffle/api/instrumentation/AllocationReporter;
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode.<init>:(Ljava/lang/String;Ljava/lang/Object;[Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$BaseNode;Lcom/oracle/truffle/api/instrumentation/AllocationReporter;)V
            areturn
        end local 1 // java.util.Set materializedTags
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    1     0              this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationTestLanguage$VariableNode;
            0    1     1  materializedTags  Ljava/util/Set<Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;>;
    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 CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
  public abstract BaseNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$BaseNode 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
  private final VariableNode = com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage$VariableNode of com.oracle.truffle.api.instrumentation.test.InstrumentationTestLanguage