public class com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter extends com.oracle.truffle.api.instrumentation.test.EnableableInstrument implements com.oracle.truffle.api.instrumentation.AllocationListener
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter
  super_class: com.oracle.truffle.api.instrumentation.test.EnableableInstrument
{
  private com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter> allocationEventBinding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0002) ACC_PRIVATE
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;>;

  private java.util.function.Consumer<com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo>[] allocationConsumers;
    descriptor: [Ljava/util/function/Consumer;
    flags: (0x0002) ACC_PRIVATE
    Signature: [Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$AllocationInfo;>;

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

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
         0: .line 911
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.EnableableInstrument.<init>:()V
         1: .line 915
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
         2: .line 911
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;

  public void setEnabled(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
        start local 1 // boolean enabled
         0: .line 919
            iload 1 /* enabled */
            ifeq 4
         1: .line 920
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.getEnv:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getLanguages:()Ljava/util/Map;
            ldc "truffle-allocation-reporter-language"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.nodes.LanguageInfo
            astore 2 /* testLanguage */
        start local 2 // com.oracle.truffle.api.nodes.LanguageInfo testLanguage
         2: .line 921
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.getEnv:()Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            invokestatic com.oracle.truffle.api.instrumentation.AllocationEventFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter$Builder;
            iconst_1
            anewarray com.oracle.truffle.api.nodes.LanguageInfo
            dup
            iconst_0
            aload 2 /* testLanguage */
            aastore
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationEventFilter$Builder.languages:([Lcom/oracle/truffle/api/nodes/LanguageInfo;)Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.AllocationEventFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter;
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachAllocationListener:(Lcom/oracle/truffle/api/instrumentation/AllocationEventFilter;Lcom/oracle/truffle/api/instrumentation/AllocationListener;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationEventBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
        end local 2 // com.oracle.truffle.api.nodes.LanguageInfo testLanguage
         3: .line 922
            goto 5
         4: .line 923
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationEventBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         5: .line 925
      StackMap locals:
      StackMap stack:
            return
        end local 1 // boolean enabled
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;
            0    6     1       enabled  Z
            2    3     2  testLanguage  Lcom/oracle/truffle/api/nodes/LanguageInfo;
    MethodParameters:
         Name  Flags
      enabled  

  final void setAllocationConsumers(java.util.function.Consumer<com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo>[]);
    descriptor: ([Ljava/util/function/Consumer;)V
    flags: (0x0090) ACC_FINAL, ACC_VARARGS
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
        start local 1 // java.util.function.Consumer[] allocationConsumers
         0: .line 930
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
         1: .line 931
            aload 0 /* this */
            aload 1 /* allocationConsumers */
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationConsumers:[Ljava/util/function/Consumer;
         2: .line 932
            return
        end local 1 // java.util.function.Consumer[] allocationConsumers
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;
            0    3     1  allocationConsumers  [Ljava/util/function/Consumer;
    Signature: ([Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$AllocationInfo;>;)V
    RuntimeVisibleAnnotations: 
      java.lang.SafeVarargs()
    MethodParameters:
                     Name  Flags
      allocationConsumers  

  com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter> getAllocationEventBinding();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
         0: .line 935
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationEventBinding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            areturn
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;
    Signature: ()Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;>;

  public void onEnter(com.oracle.truffle.api.instrumentation.AllocationEvent);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/AllocationEvent;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
        start local 1 // com.oracle.truffle.api.instrumentation.AllocationEvent event
         0: .line 941
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationConsumers:[Ljava/util/function/Consumer;
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
            dup_x1
            iconst_1
            iadd
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
            aaload
            astore 2 /* consumer */
        start local 2 // java.util.function.Consumer consumer
         1: .line 942
            aload 2 /* consumer */
            new com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo
            dup
            aload 1 /* event */
            iconst_1
            invokespecial com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo.<init>:(Lcom/oracle/truffle/api/instrumentation/AllocationEvent;Z)V
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         2: .line 943
            return
        end local 2 // java.util.function.Consumer consumer
        end local 1 // com.oracle.truffle.api.instrumentation.AllocationEvent event
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;
            0    3     1     event  Lcom/oracle/truffle/api/instrumentation/AllocationEvent;
            1    3     2  consumer  Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$AllocationInfo;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      event  

  public void onReturnValue(com.oracle.truffle.api.instrumentation.AllocationEvent);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/AllocationEvent;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
        start local 1 // com.oracle.truffle.api.instrumentation.AllocationEvent event
         0: .line 948
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.allocationConsumers:[Ljava/util/function/Consumer;
            aload 0 /* this */
            dup
            getfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
            dup_x1
            iconst_1
            iadd
            putfield com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter.consumersIndex:I
            aaload
            astore 2 /* consumer */
        start local 2 // java.util.function.Consumer consumer
         1: .line 949
            aload 2 /* consumer */
            new com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo
            dup
            aload 1 /* event */
            iconst_0
            invokespecial com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo.<init>:(Lcom/oracle/truffle/api/instrumentation/AllocationEvent;Z)V
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         2: .line 950
            return
        end local 2 // java.util.function.Consumer consumer
        end local 1 // com.oracle.truffle.api.instrumentation.AllocationEvent event
        end local 0 // com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;
            0    3     1     event  Lcom/oracle/truffle/api/instrumentation/AllocationEvent;
            1    3     2  consumer  Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$AllocationInfo;>;
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
    MethodParameters:
       Name  Flags
      event  
}
SourceFile: "AllocationReporterTest.java"
NestHost: com.oracle.truffle.api.instrumentation.test.AllocationReporterTest
InnerClasses:
  public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives
  public Builder = com.oracle.truffle.api.instrumentation.AllocationEventFilter$Builder of com.oracle.truffle.api.instrumentation.AllocationEventFilter
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public abstract Registration = com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration of com.oracle.truffle.api.instrumentation.TruffleInstrument
  private final AllocationInfo = com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$AllocationInfo of com.oracle.truffle.api.instrumentation.test.AllocationReporterTest
  public TestAllocationReporter = com.oracle.truffle.api.instrumentation.test.AllocationReporterTest$TestAllocationReporter of com.oracle.truffle.api.instrumentation.test.AllocationReporterTest
    RuntimeVisibleAnnotations: 
      com.oracle.truffle.api.instrumentation.TruffleInstrument$Registration(id = "testAllocationReporter", services = {Lcom/oracle/truffle/api/instrumentation/test/AllocationReporterTest$TestAllocationReporter;})