public class com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  super_class: java.lang.Object
{
  protected org.graalvm.polyglot.Context context;
    descriptor: Lorg/graalvm/polyglot/Context;
    flags: (0x0004) ACC_PROTECTED

  protected com.oracle.truffle.api.instrumentation.test.InputFilterTestInstrument instrument;
    descriptor: Lcom/oracle/truffle/api/instrumentation/test/InputFilterTestInstrument;
    flags: (0x0004) ACC_PROTECTED

  protected com.oracle.truffle.api.instrumentation.Instrumenter instrumenter;
    descriptor: Lcom/oracle/truffle/api/instrumentation/Instrumenter;
    flags: (0x0004) ACC_PROTECTED

  protected java.util.List<com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event> events;
    descriptor: Ljava/util/List;
    flags: (0x0004) ACC_PROTECTED
    Signature: Ljava/util/List<Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;>;

  protected com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory factory;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.Error error;
    descriptor: Ljava/lang/Error;
    flags: (0x0004) ACC_PROTECTED

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
         2: .line 63
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;

  public final void setUp();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
         0: .line 129
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.create:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.context:Lorg/graalvm/polyglot/Context;
         1: .line 130
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getEngine:()Lorg/graalvm/polyglot/Engine;
            invokevirtual org.graalvm.polyglot.Engine.getInstruments:()Ljava/util/Map;
            ldc "TestInputFilterInstrument"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            ldc Lcom/oracle/truffle/api/instrumentation/test/InputFilterTestInstrument;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InputFilterTestInstrument
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.instrument:Lcom/oracle/truffle/api/instrumentation/test/InputFilterTestInstrument;
         2: .line 131
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.instrument:Lcom/oracle/truffle/api/instrumentation/test/InputFilterTestInstrument;
            getfield com.oracle.truffle.api.instrumentation.test.InputFilterTestInstrument.environment:Lcom/oracle/truffle/api/instrumentation/TruffleInstrument$Env;
            invokevirtual com.oracle.truffle.api.instrumentation.TruffleInstrument$Env.getInstrumenter:()Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.instrumenter:Lcom/oracle/truffle/api/instrumentation/Instrumenter;
         3: .line 132
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
         4: .line 133
            aload 0 /* this */
            new com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsFactory
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsFactory.<init>:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;)V
            putfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.factory:Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
         5: .line 134
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  protected final void execute(org.graalvm.polyglot.Source);
    descriptor: (Lorg/graalvm/polyglot/Source;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
        start local 1 // org.graalvm.polyglot.Source source
         0: .line 137
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         1: .line 138
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.error:Ljava/lang/Error;
            ifnull 3
         2: .line 139
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.error:Ljava/lang/Error;
            athrow
         3: .line 141
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            0    4     1  source  Lorg/graalvm/polyglot/Source;
    MethodParameters:
        Name  Flags
      source  

  protected final void execute(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
        start local 1 // java.lang.String expression
         0: .line 144
            aload 0 /* this */
            aload 1 /* expression */
            invokestatic com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.createSource:(Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.execute:(Lorg/graalvm/polyglot/Source;)V
         1: .line 145
            return
        end local 1 // java.lang.String expression
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            0    2     1  expression  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      expression  

  protected static final org.graalvm.polyglot.Source createSource(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String expression
         0: .line 148
            ldc "instrumentation-test-language"
            aload 0 /* expression */
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 0 // java.lang.String expression
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  expression  Ljava/lang/String;
    MethodParameters:
            Name  Flags
      expression  

  protected static void assertCharacters(com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event, java.lang.String);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;Ljava/lang/String;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event e
        start local 1 // java.lang.String s
         0: .line 152
            aload 1 /* s */
            aload 0 /* e */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedSourceSection:()Lcom/oracle/truffle/api/source/SourceSection;
            invokevirtual com.oracle.truffle.api.source.SourceSection.getCharacters:()Ljava/lang/CharSequence;
            invokeinterface java.lang.CharSequence.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 153
            return
        end local 1 // java.lang.String s
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     e  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;
            0    2     1     s  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      e     
      s     

  protected final void assertOn(com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind expectedKind
         0: .line 156
            aload 0 /* this */
            aload 1 /* expectedKind */
            invokedynamic accept()Ljava/util/function/Consumer;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  (Ljava/lang/Object;)V
                  com/oracle/truffle/api/instrumentation/test/InstrumentationEventTest.lambda$0(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;)V (6)
                  (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;)V
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.assertOn:(Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Ljava/util/function/Consumer;)V
         1: .line 158
            return
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind expectedKind
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    2     0          this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            0    2     1  expectedKind  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
    MethodParameters:
              Name  Flags
      expectedKind  

  protected final void assertOn(com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind, java.util.function.Consumer<com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event>);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Ljava/util/function/Consumer;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
        start local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind expectedKind
        start local 2 // java.util.function.Consumer verify
         0: .line 161
            ldc "queue not empty"
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         1: .line 162
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event
            astore 3 /* event */
        start local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event event
         2: .line 163
            aload 1 /* expectedKind */
            aload 3 /* event */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event.kind:Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 164
            aload 2 /* verify */
            aload 3 /* event */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         4: .line 165
            return
        end local 3 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event event
        end local 2 // java.util.function.Consumer verify
        end local 1 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind expectedKind
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
            0    5     1  expectedKind  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;
            0    5     2        verify  Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;>;
            2    5     3         event  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;
    Signature: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$EventKind;Ljava/util/function/Consumer<Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;>;)V
    MethodParameters:
              Name  Flags
      expectedKind  
      verify        

  protected final void assertAllEventsConsumed();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
         0: .line 168
            new java.lang.StringBuilder
            dup
            ldc "all events consumed "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.events:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         1: .line 169
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;

  public final void tearDown();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
         0: .line 173
            aload 0 /* this */
            getfield com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.close:()V
         1: .line 174
            aload 0 /* this */
            invokevirtual com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest.assertAllEventsConsumed:()V
         2: .line 175
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest;
    RuntimeVisibleAnnotations: 
      org.junit.After()

  private static void lambda$0(com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=0, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event e
         0: .line 157
            return
        end local 0 // com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Lcom/oracle/truffle/api/instrumentation/test/InstrumentationEventTest$Event;
}
SourceFile: "InstrumentationEventTest.java"
NestMembers:
  com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsFactory  com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode  com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event  com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind
InnerClasses:
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  protected CollectEventsFactory = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsFactory of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  protected CollectEventsNode = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$CollectEventsNode of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  protected Event = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$Event of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  final EventKind = com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest$EventKind of com.oracle.truffle.api.instrumentation.test.InstrumentationEventTest
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles