public abstract class com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest
  super_class: java.lang.Object
{
  private static final boolean DEBUG;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  protected static final java.lang.String KEY;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "key"

  protected static final java.lang.String NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "name"

  protected static final java.lang.String TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "type"

  protected static final java.lang.String DECL_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "declarationName"

  protected static final java.lang.String DECL_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "declarationType"

  protected static final java.lang.String LITERAL_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "literalType"

  protected static final java.lang.String OPERATOR;
    descriptor: Ljava/lang/String;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    ConstantValue: "operator"

  protected org.graalvm.polyglot.Context context;
    descriptor: Lorg/graalvm/polyglot/Context;
    flags: (0x0004) ACC_PROTECTED

  private boolean collecting;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  private java.util.List<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> events;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  private java.util.Deque<com.oracle.truffle.js.nodes.JavaScriptNode> stack;
    descriptor: Ljava/util/Deque;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Deque<Lcom/oracle/truffle/js/nodes/JavaScriptNode;>;

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

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

  private com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory factory;
    descriptor: Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
    flags: (0x0002) ACC_PRIVATE

  protected com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> binding;
    descriptor: Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSObjectInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSPromiseInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertTruffleObject;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSArrayInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertUndefinedInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertGlobalObjectInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSFunctionInput;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSFunctionReturn;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSObjectReturn;
    descriptor: Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 480
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$5(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSObjectInput:Ljava/util/function/Consumer;
         1: .line 486
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$4(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSPromiseInput:Ljava/util/function/Consumer;
         2: .line 493
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$6(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertTruffleObject:Ljava/util/function/Consumer;
         3: .line 497
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$3(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSArrayInput:Ljava/util/function/Consumer;
         4: .line 502
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$0(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertUndefinedInput:Ljava/util/function/Consumer;
         5: .line 506
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$1(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertGlobalObjectInput:Ljava/util/function/Consumer;
         6: .line 512
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$2(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSFunctionInput:Ljava/util/function/Consumer;
         7: .line 523
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$8(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSFunctionReturn:Ljava/util/function/Consumer;
         8: .line 529
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$7(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            putstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSObjectReturn:Ljava/util/function/Consumer;
         9: .line 535
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
         0: .line 94
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;

  public static final java.lang.String getTagNames(com.oracle.truffle.js.nodes.JavaScriptNode);
    descriptor: (Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.JavaScriptNode node
         0: .line 108
            new java.util.StringJoiner
            dup
            ldc " "
            invokespecial java.util.StringJoiner.<init>:(Ljava/lang/CharSequence;)V
            astore 1 /* tags */
        start local 1 // java.util.StringJoiner tags
         1: .line 110
            aload 0 /* node */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$StatementTag;
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 3
         2: .line 111
            aload 1 /* tags */
            ldc "STMT"
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
         3: .line 113
      StackMap locals: java.util.StringJoiner
      StackMap stack:
            aload 0 /* node */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootTag;
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 5
         4: .line 114
            aload 1 /* tags */
            ldc "ROOT"
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
         5: .line 116
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$RootBodyTag;
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 7
         6: .line 117
            aload 1 /* tags */
            ldc "BODY"
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
         7: .line 119
      StackMap locals:
      StackMap stack:
            aload 0 /* node */
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$ExpressionTag;
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 9
         8: .line 120
            aload 1 /* tags */
            ldc "EXPR"
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
         9: .line 122
      StackMap locals:
      StackMap stack:
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags.ALL:[Ljava/lang/Class;
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 14
      StackMap locals: com.oracle.truffle.js.nodes.JavaScriptNode java.util.StringJoiner top int int java.lang.Class[]
      StackMap stack:
        10: aload 5
            iload 3
            aaload
            astore 2 /* c */
        start local 2 // java.lang.Class c
        11: .line 123
            aload 0 /* node */
            aload 2 /* c */
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 13
        12: .line 124
            aload 1 /* tags */
            aload 2 /* c */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.util.StringJoiner.add:(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
            pop
        end local 2 // java.lang.Class c
        13: .line 122
      StackMap locals:
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
        14: iload 3
            iload 4
            if_icmplt 10
        15: .line 127
            aload 1 /* tags */
            invokevirtual java.util.StringJoiner.toString:()Ljava/lang/String;
            areturn
        end local 1 // java.util.StringJoiner tags
        end local 0 // com.oracle.truffle.js.nodes.JavaScriptNode node
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  node  Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            1   16     1  tags  Ljava/util/StringJoiner;
           11   13     2     c  Ljava/lang/Class<*>;
    MethodParameters:
      Name  Flags
      node  

  private com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event getNextEvent();
    descriptor: ()Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
         0: .line 172
            ldc "empty queue!"
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertFalse:(Ljava/lang/String;Z)V
         1: .line 173
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
            iconst_0
            invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event
            areturn
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;

  private static void assertKindTag(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind, java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;Ljava/lang/Class;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind kind
        start local 1 // java.lang.Class tag
        start local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
         0: .line 243
            new java.lang.StringBuilder
            dup
            ldc "expected "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* kind */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind.name:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* tag */
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", actual ["
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* event */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.instrumentedNode:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getTagNames:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 2 /* event */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.kind:Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "]"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         1: .line 244
            aload 2 /* event */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.instrumentedNode:Lcom/oracle/truffle/js/nodes/JavaScriptNode;
            aload 1 /* tag */
            invokevirtual com.oracle.truffle.js.nodes.JavaScriptNode.hasTag:(Ljava/lang/Class;)Z
            ifeq 2
            aload 0 /* kind */
            aload 2 /* event */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.kind:Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind.equals:(Ljava/lang/Object;)Z
            ifeq 2
            iconst_1
            goto 3
      StackMap locals:
      StackMap stack: java.lang.String
         2: iconst_0
         3: .line 243
      StackMap locals: com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind java.lang.Class com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event
      StackMap stack: java.lang.String int
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         4: .line 245
            return
        end local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind kind
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   kind  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            0    5     1    tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
            0    5     2  event  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
    Signature: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    MethodParameters:
       Name  Flags
      kind   
      tag    
      event  

  protected void enterDeclareTag(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String expectedVarName
         0: .line 248
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$DeclareTag;
            aload 1 /* expectedVarName */
            invokedynamic accept(Ljava/lang/String;)Ljava/util/function/BiConsumer;
              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;Ljava/lang/Object;)V
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$9(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
         1: .line 250
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         2: .line 251
            return
        end local 1 // java.lang.String expectedVarName
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    3     0             this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1  expectedVarName  Ljava/lang/String;
    MethodParameters:
                 Name  Flags
      expectedVarName  

  protected com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent enter(java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>);
    descriptor: (Ljava/lang/Class;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.Class tag
         0: .line 254
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getNextEvent:()Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            astore 2 /* event */
        start local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
         1: .line 255
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind.ENTER:Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            aload 1 /* tag */
            aload 2 /* event */
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertKindTag:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;Ljava/lang/Class;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
         2: .line 256
            new com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent
            dup
            aload 0 /* this */
            aload 1 /* tag */
            invokespecial com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.<init>:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/Class;)V
            areturn
        end local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1    tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
            1    3     2  event  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    MethodParameters:
      Name  Flags
      tag   

  protected com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent enter(java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>, java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event>);
    descriptor: (Ljava/lang/Class;Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.Class tag
        start local 2 // java.util.function.Consumer verify
         0: .line 260
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getNextEvent:()Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            astore 3 /* event */
        start local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
         1: .line 261
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind.ENTER:Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            aload 1 /* tag */
            aload 3 /* event */
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertKindTag:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;Ljava/lang/Class;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
         2: .line 262
            aload 2 /* verify */
            aload 3 /* event */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
         3: .line 263
            new com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent
            dup
            aload 0 /* this */
            aload 1 /* tag */
            invokespecial com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.<init>:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/Class;)V
            areturn
        end local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
        end local 2 // java.util.function.Consumer verify
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    4     1     tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
            0    4     2  verify  Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
            1    4     3   event  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    MethodParameters:
        Name  Flags
      tag     
      verify  

  protected com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent enter(java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>, java.util.function.BiConsumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent>);
    descriptor: (Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.Class tag
        start local 2 // java.util.function.BiConsumer verify
         0: .line 267
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getNextEvent:()Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            astore 3 /* event */
        start local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
         1: .line 268
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind.ENTER:Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;
            aload 1 /* tag */
            aload 3 /* event */
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertKindTag:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event$Kind;Ljava/lang/Class;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
         2: .line 269
            new com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent
            dup
            aload 0 /* this */
            aload 1 /* tag */
            invokespecial com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.<init>:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/Class;)V
            astore 4 /* chain */
        start local 4 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent chain
         3: .line 270
            aload 2 /* verify */
            aload 3 /* event */
            aload 4 /* chain */
            invokeinterface java.util.function.BiConsumer.accept:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 271
            aload 4 /* chain */
            areturn
        end local 4 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent chain
        end local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event event
        end local 2 // java.util.function.BiConsumer verify
        end local 1 // java.lang.Class tag
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    5     1     tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
            0    5     2  verify  Ljava/util/function/BiConsumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;>;
            1    5     3   event  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            3    5     4   chain  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    Signature: (Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;Ljava/util/function/BiConsumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;>;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
    MethodParameters:
        Name  Flags
      tag     
      verify  

  protected com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory getTestFactory();
    descriptor: ()Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
         0: .line 275
            new com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$1
            dup
            aload 0 /* this */
            invokespecial com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$1.<init>:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;)V
            areturn
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;

  protected static void assertAttribute(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, java.lang.String, java.lang.Object);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        start local 1 // java.lang.String attribute
        start local 2 // java.lang.Object expected
         0: .line 362
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.context:Lcom/oracle/truffle/api/instrumentation/EventContext;
            aload 1 /* attribute */
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getAttributeFrom:(Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* val */
        start local 3 // java.lang.Object val
         1: .line 363
            aload 2 /* expected */
            aload 3 /* val */
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 364
            return
        end local 3 // java.lang.Object val
        end local 2 // java.lang.Object expected
        end local 1 // java.lang.String attribute
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0          e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            0    3     1  attribute  Ljava/lang/String;
            0    3     2   expected  Ljava/lang/Object;
            1    3     3        val  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      e          
      attribute  
      expected   

  public static java.lang.Object getAttributeFrom(com.oracle.truffle.api.instrumentation.EventContext, java.lang.String);
    descriptor: (Lcom/oracle/truffle/api/instrumentation/EventContext;Ljava/lang/String;)Ljava/lang/Object;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.oracle.truffle.api.instrumentation.EventContext cx
        start local 1 // java.lang.String name
         0: .line 368
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            aload 0 /* cx */
            invokevirtual com.oracle.truffle.api.instrumentation.EventContext.getInstrumentedNode:()Lcom/oracle/truffle/api/nodes/Node;
            checkcast com.oracle.truffle.api.instrumentation.InstrumentableNode
            invokeinterface com.oracle.truffle.api.instrumentation.InstrumentableNode.getNodeObject:()Ljava/lang/Object;
            aload 1 /* name */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
         1: areturn
         2: .line 369
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.InteropException
            astore 2 /* e */
        start local 2 // com.oracle.truffle.api.interop.InteropException e
         3: .line 370
            new java.lang.RuntimeException
            dup
            aload 2 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // com.oracle.truffle.api.interop.InteropException e
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.api.instrumentation.EventContext cx
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0    cx  Lcom/oracle/truffle/api/instrumentation/EventContext;
            0    4     1  name  Ljava/lang/String;
            3    4     2     e  Lcom/oracle/truffle/api/interop/InteropException;
      Exception table:
        from    to  target  type
           0     1       2  Class com.oracle.truffle.api.interop.UnknownIdentifierException
           0     1       2  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    MethodParameters:
      Name  Flags
      cx    
      name  

  protected org.graalvm.polyglot.Source evalWithTag(java.lang.String, java.lang.Class<? extends com.oracle.truffle.api.instrumentation.Tag>);
    descriptor: (Ljava/lang/String;Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String src
        start local 2 // java.lang.Class tag
         0: .line 375
            aload 0 /* this */
            aload 1 /* src */
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            aload 2 /* tag */
            aastore
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.evalWithTags:(Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 2 // java.lang.Class tag
        end local 1 // java.lang.String src
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    1     1   src  Ljava/lang/String;
            0    1     2   tag  Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;
    Signature: (Ljava/lang/String;Ljava/lang/Class<+Lcom/oracle/truffle/api/instrumentation/Tag;>;)Lorg/graalvm/polyglot/Source;
    MethodParameters:
      Name  Flags
      src   
      tag   

  protected org.graalvm.polyglot.Source evalAllTags(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String src
         0: .line 379
            aload 0 /* this */
            aload 1 /* src */
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags.ALL:[Ljava/lang/Class;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.evalWithTags:(Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 1 // java.lang.String src
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    1     1   src  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      src   

  protected org.graalvm.polyglot.Source evalWithTags(java.lang.String, java.lang.Class<?>[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String src
        start local 2 // java.lang.Class[] filterTags
         0: .line 383
            aload 0 /* this */
            aload 1 /* src */
            aload 2 /* filterTags */
            iconst_2
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/api/instrumentation/StandardTags$ExpressionTag;
            aastore
            dup
            iconst_1
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$InputNodeTag;
            aastore
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.evalWithTags:(Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 2 // java.lang.Class[] filterTags
        end local 1 // java.lang.String src
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0        this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    1     1         src  Ljava/lang/String;
            0    1     2  filterTags  [Ljava/lang/Class;
    Signature: (Ljava/lang/String;[Ljava/lang/Class<*>;)Lorg/graalvm/polyglot/Source;
    MethodParameters:
            Name  Flags
      src         
      filterTags  

  protected org.graalvm.polyglot.Source eval(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String src
         0: .line 387
            ldc "js"
            aload 1 /* src */
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 2 /* source */
        start local 2 // org.graalvm.polyglot.Source source
         1: .line 388
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
            aload 2 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         2: .line 389
            aload 2 /* source */
            areturn
        end local 2 // org.graalvm.polyglot.Source source
        end local 1 // java.lang.String src
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1     src  Ljava/lang/String;
            1    3     2  source  Lorg/graalvm/polyglot/Source;
    MethodParameters:
      Name  Flags
      src   

  protected org.graalvm.polyglot.Source evalWithTags(java.lang.String, java.lang.Class<?>[], java.lang.Class<?>[]);
    descriptor: (Ljava/lang/String;[Ljava/lang/Class;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String src
        start local 2 // java.lang.Class[] sourceSectionTags
        start local 3 // java.lang.Class[] inputGeneratingTags
         0: .line 393
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* sourceSectionTags */
            aload 3 /* inputGeneratingTags */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.initAgent:([Ljava/lang/Class;[Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         1: .line 394
            ldc "js"
            aload 1 /* src */
            invokestatic org.graalvm.polyglot.Source.create:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Source;
            astore 4 /* source */
        start local 4 // org.graalvm.polyglot.Source source
         2: .line 395
            aload 0 /* this */
            aload 4 /* source */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.evalWithCurrentBinding:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Source;
            pop
         3: .line 396
            aload 4 /* source */
            areturn
        end local 4 // org.graalvm.polyglot.Source source
        end local 3 // java.lang.Class[] inputGeneratingTags
        end local 2 // java.lang.Class[] sourceSectionTags
        end local 1 // java.lang.String src
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    4     0                 this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    4     1                  src  Ljava/lang/String;
            0    4     2    sourceSectionTags  [Ljava/lang/Class;
            0    4     3  inputGeneratingTags  [Ljava/lang/Class;
            2    4     4               source  Lorg/graalvm/polyglot/Source;
    Signature: (Ljava/lang/String;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Lorg/graalvm/polyglot/Source;
    MethodParameters:
                     Name  Flags
      src                  
      sourceSectionTags    
      inputGeneratingTags  

  protected org.graalvm.polyglot.Source evalWithCurrentBinding(org.graalvm.polyglot.Source);
    descriptor: (Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // org.graalvm.polyglot.Source source
         0: .line 400
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.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 401
            aload 1 /* source */
            areturn
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    2     1  source  Lorg/graalvm/polyglot/Source;
    MethodParameters:
        Name  Flags
      source  

  protected org.graalvm.polyglot.Source evalWithTags(org.graalvm.polyglot.Source, java.lang.Class<?>[], java.lang.Class<?>[]);
    descriptor: (Lorg/graalvm/polyglot/Source;[Ljava/lang/Class;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // org.graalvm.polyglot.Source source
        start local 2 // java.lang.Class[] sourceSectionTags
        start local 3 // java.lang.Class[] inputGeneratingTags
         0: .line 405
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* sourceSectionTags */
            aload 3 /* inputGeneratingTags */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.initAgent:([Ljava/lang/Class;[Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
         1: .line 406
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
            aload 1 /* source */
            invokevirtual org.graalvm.polyglot.Context.eval:(Lorg/graalvm/polyglot/Source;)Lorg/graalvm/polyglot/Value;
            pop
         2: .line 407
            aload 1 /* source */
            areturn
        end local 3 // java.lang.Class[] inputGeneratingTags
        end local 2 // java.lang.Class[] sourceSectionTags
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    3     0                 this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1               source  Lorg/graalvm/polyglot/Source;
            0    3     2    sourceSectionTags  [Ljava/lang/Class;
            0    3     3  inputGeneratingTags  [Ljava/lang/Class;
    Signature: (Lorg/graalvm/polyglot/Source;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Lorg/graalvm/polyglot/Source;
    MethodParameters:
                     Name  Flags
      source               
      sourceSectionTags    
      inputGeneratingTags  

  protected org.graalvm.polyglot.Source evalWithNewTags(org.graalvm.polyglot.Source, java.lang.Class<?>[], java.lang.Class<?>[]);
    descriptor: (Lorg/graalvm/polyglot/Source;[Ljava/lang/Class;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // org.graalvm.polyglot.Source source
        start local 2 // java.lang.Class[] sourceSectionTags
        start local 3 // java.lang.Class[] inputGeneratingTags
         0: .line 411
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         1: .line 412
            aload 0 /* this */
            aload 1 /* source */
            aload 2 /* sourceSectionTags */
            aload 3 /* inputGeneratingTags */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.evalWithTags:(Lorg/graalvm/polyglot/Source;[Ljava/lang/Class;[Ljava/lang/Class;)Lorg/graalvm/polyglot/Source;
            areturn
        end local 3 // java.lang.Class[] inputGeneratingTags
        end local 2 // java.lang.Class[] sourceSectionTags
        end local 1 // org.graalvm.polyglot.Source source
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    2     0                 this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    2     1               source  Lorg/graalvm/polyglot/Source;
            0    2     2    sourceSectionTags  [Ljava/lang/Class;
            0    2     3  inputGeneratingTags  [Ljava/lang/Class;
    Signature: (Lorg/graalvm/polyglot/Source;[Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Lorg/graalvm/polyglot/Source;
    MethodParameters:
                     Name  Flags
      source               
      sourceSectionTags    
      inputGeneratingTags  

  protected void declareInteropSymbol(java.lang.String, com.oracle.truffle.js.test.instrumentation.ForeignTestObject);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/ForeignTestObject;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String name
        start local 2 // com.oracle.truffle.js.test.instrumentation.ForeignTestObject foreignObject
         0: .line 416
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.getPolyglotBindings:()Lorg/graalvm/polyglot/Value;
            aload 1 /* name */
            aload 2 /* foreignObject */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 417
            return
        end local 2 // com.oracle.truffle.js.test.instrumentation.ForeignTestObject foreignObject
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    2     1           name  Ljava/lang/String;
            0    2     2  foreignObject  Lcom/oracle/truffle/js/test/instrumentation/ForeignTestObject;
    MethodParameters:
               Name  Flags
      name           
      foreignObject  

  public void disposeAgent();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
         0: .line 421
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         1: .line 422
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.stack:Ljava/util/Deque;
            invokevirtual java.lang.Object.toString:()Ljava/lang/String;
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.stack:Ljava/util/Deque;
            invokeinterface java.util.Deque.isEmpty:()Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         2: .line 423
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.leave:()V
         3: .line 424
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
            invokeinterface java.util.List.clear:()V
         4: .line 425
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.binding:Lcom/oracle/truffle/api/instrumentation/EventBinding;
            invokevirtual com.oracle.truffle.api.instrumentation.EventBinding.dispose:()V
         5: .line 426
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
    RuntimeVisibleAnnotations: 
      org.junit.After()

  public void initTest();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
         0: .line 430
            aload 0 /* this */
            iconst_0
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.collecting:Z
         1: .line 431
            aload 0 /* this */
            iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.instrumentation.TestUtil.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            getstatic org.graalvm.polyglot.PolyglotAccess.ALL:Lorg/graalvm/polyglot/PolyglotAccess;
            invokevirtual org.graalvm.polyglot.Context$Builder.allowPolyglotAccess:(Lorg/graalvm/polyglot/PolyglotAccess;)Lorg/graalvm/polyglot/Context$Builder;
            ldc "js.ecmascript-version"
            ldc "2021"
            invokevirtual org.graalvm.polyglot.Context$Builder.option:(Ljava/lang/String;Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
         2: .line 432
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.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 "TestingExecutionInstrument"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Instrument
            ldc Lcom/oracle/truffle/js/test/instrumentation/TestingExecutionInstrument;
            invokevirtual org.graalvm.polyglot.Instrument.lookup:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.js.test.instrumentation.TestingExecutionInstrument
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.instrument:Lcom/oracle/truffle/js/test/instrumentation/TestingExecutionInstrument;
         3: .line 433
            aload 0 /* this */
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.instrument:Lcom/oracle/truffle/js/test/instrumentation/TestingExecutionInstrument;
            invokevirtual com.oracle.truffle.js.test.instrumentation.TestingExecutionInstrument.getEnvironment:()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.js.test.instrumentation.FineGrainedAccessTest.instrumenter:Lcom/oracle/truffle/api/instrumentation/Instrumenter;
         4: .line 434
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.events:Ljava/util/List;
         5: .line 435
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.stack:Ljava/util/Deque;
         6: .line 436
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.getTestFactory:()Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
            putfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.factory:Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
         7: .line 437
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.context:Lorg/graalvm/polyglot/Context;
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         8: .line 438
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  private com.oracle.truffle.api.instrumentation.EventBinding<com.oracle.truffle.api.instrumentation.ExecutionEventNodeFactory> initAgent(java.lang.Class<?>[], java.lang.Class<?>[]);
    descriptor: ([Ljava/lang/Class;[Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.Class[] sourceSectionTags
        start local 2 // java.lang.Class[] inputGeneratingTags
         0: .line 441
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            aload 1 /* sourceSectionTags */
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 3 /* sourceSectionFilter */
        start local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter sourceSectionFilter
         1: .line 442
            invokestatic com.oracle.truffle.api.instrumentation.SourceSectionFilter.newBuilder:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            aload 2 /* inputGeneratingTags */
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.tagIs:([Ljava/lang/Class;)Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter$Builder;
            invokevirtual com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder.build:()Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            astore 4 /* inputGeneratingFilter */
        start local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter inputGeneratingFilter
         2: .line 443
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.instrumenter:Lcom/oracle/truffle/api/instrumentation/Instrumenter;
            aload 3 /* sourceSectionFilter */
            aload 4 /* inputGeneratingFilter */
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.factory:Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;
            invokevirtual com.oracle.truffle.api.instrumentation.Instrumenter.attachExecutionEventFactory:(Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;)Lcom/oracle/truffle/api/instrumentation/EventBinding;
            areturn
        end local 4 // com.oracle.truffle.api.instrumentation.SourceSectionFilter inputGeneratingFilter
        end local 3 // com.oracle.truffle.api.instrumentation.SourceSectionFilter sourceSectionFilter
        end local 2 // java.lang.Class[] inputGeneratingTags
        end local 1 // java.lang.Class[] sourceSectionTags
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    3     0                   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1      sourceSectionTags  [Ljava/lang/Class;
            0    3     2    inputGeneratingTags  [Ljava/lang/Class;
            1    3     3    sourceSectionFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
            2    3     4  inputGeneratingFilter  Lcom/oracle/truffle/api/instrumentation/SourceSectionFilter;
    Signature: ([Ljava/lang/Class<*>;[Ljava/lang/Class<*>;)Lcom/oracle/truffle/api/instrumentation/EventBinding<Lcom/oracle/truffle/api/instrumentation/ExecutionEventNodeFactory;>;
    MethodParameters:
                     Name  Flags
      sourceSectionTags    
      inputGeneratingTags  

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertReturnValue();
    descriptor: (Ljava/lang/Object;)Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object expected
         0: .line 449
            aload 0 /* expected */
            invokedynamic accept(Ljava/lang/Object;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$10(Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            areturn
        end local 0 // java.lang.Object expected
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0  expected  Ljava/lang/Object;
    Signature: (Ljava/lang/Object;)Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
    MethodParameters:
          Name  Flags
      expected  

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertLiteralType(com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type);
    descriptor: (Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;)Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type type
         0: .line 457
            aload 0 /* type */
            invokedynamic accept(Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$11(Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            areturn
        end local 0 // com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type type
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  type  Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;
    Signature: (Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;)Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
    MethodParameters:
      Name  Flags
      type  

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertPropertyReadName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 463
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$12(Ljava/lang/String;)Ljava/util/function/Consumer; (6)
                  (Ljava/lang/String;)Ljava/util/function/Consumer;
            astore 1 /* fun */
        start local 1 // java.util.function.Function fun
         1: .line 468
            aload 1 /* fun */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.function.Consumer
            areturn
        end local 1 // java.util.function.Function fun
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  name  Ljava/lang/String;
            1    2     1   fun  Ljava/util/function/Function<Ljava/lang/String;Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;>;
    Signature: (Ljava/lang/String;)Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
    MethodParameters:
      Name  Flags
      name  

  protected static final java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertVarReadName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/function/Consumer;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.lang.String name
         0: .line 472
            invokedynamic apply()Ljava/util/function/Function;
              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;)Ljava/lang/Object;
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$14(Ljava/lang/String;)Ljava/util/function/Consumer; (6)
                  (Ljava/lang/String;)Ljava/util/function/Consumer;
            astore 1 /* fun */
        start local 1 // java.util.function.Function fun
         1: .line 477
            aload 1 /* fun */
            aload 0 /* name */
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.function.Consumer
            areturn
        end local 1 // java.util.function.Function fun
        end local 0 // java.lang.String name
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  name  Ljava/lang/String;
            1    2     1   fun  Ljava/util/function/Function<Ljava/lang/String;Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;>;
    Signature: (Ljava/lang/String;)Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
    MethodParameters:
      Name  Flags
      name  

  protected static java.util.function.Consumer<com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event> assertJSFunctionInputWithName(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/function/Consumer;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String expectedFunctionName
         0: .line 517
            aload 0 /* expectedFunctionName */
            invokedynamic accept(Ljava/lang/String;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$16(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            areturn
        end local 0 // java.lang.String expectedFunctionName
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    1     0  expectedFunctionName  Ljava/lang/String;
    Signature: (Ljava/lang/String;)Ljava/util/function/Consumer<Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;>;
    MethodParameters:
                      Name  Flags
      expectedFunctionName  

  protected void assertGlobalVarDeclaration(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String name
        start local 2 // java.lang.Object value
         0: .line 538
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$WritePropertyTag;
            aload 0 /* this */
            aload 1 /* name */
            aload 2 /* value */
            invokedynamic accept(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/String;Ljava/lang/Object;)Ljava/util/function/BiConsumer;
              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;Ljava/lang/Object;)V
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$17(Ljava/lang/String;Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V (7)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
         1: .line 551
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         2: .line 552
            return
        end local 2 // java.lang.Object value
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1   name  Ljava/lang/String;
            0    3     2  value  Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      name   
      value  

  protected void assertGlobalFunctionExpressionDeclaration(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String name
         0: .line 555
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$WritePropertyTag;
            aload 0 /* this */
            aload 1 /* name */
            invokedynamic accept(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/String;)Ljava/util/function/BiConsumer;
              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;Ljava/lang/Object;)V
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$19(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V (7)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
         1: .line 565
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         2: .line 566
            return
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  protected void assertGlobalArrayLiteralDeclaration(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 1 // java.lang.String name
         0: .line 569
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$WritePropertyTag;
            aload 0 /* this */
            aload 1 /* name */
            invokedynamic accept(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;Ljava/lang/String;)Ljava/util/function/BiConsumer;
              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;Ljava/lang/Object;)V
                  com/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest.lambda$21(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V (7)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;Ljava/util/function/BiConsumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
         1: .line 574
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         2: .line 575
            return
        end local 1 // java.lang.String name
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    3     1  name  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      name  

  private static void lambda$5(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 481
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: invokestatic org.junit.Assert.assertTrue:(Z)V
         3: .line 482
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            ifeq 4
            iconst_0
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_1
      StackMap locals:
      StackMap stack: int
         5: invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 483
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 484
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$4(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 487
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            ifeq 1
            iconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_1
      StackMap locals:
      StackMap stack: int
         2: invokestatic org.junit.Assert.assertTrue:(Z)V
         3: .line 488
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            ifeq 4
            iconst_0
            goto 5
      StackMap locals:
      StackMap stack:
         4: iconst_1
      StackMap locals:
      StackMap stack: int
         5: invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 489
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 490
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSPromise.isJSPromise:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 491
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$6(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 494
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            instanceof com.oracle.truffle.api.interop.TruffleObject
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 495
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$3(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 498
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 499
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSArray.isJSArray:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         2: .line 500
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$0(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 503
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         1: .line 504
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$1(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 507
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 508
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getJSContext:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/JSContext;
            invokevirtual com.oracle.truffle.js.runtime.JSContext.getRealm:()Lcom/oracle/truffle/js/runtime/JSRealm;
            invokevirtual com.oracle.truffle.js.runtime.JSRealm.getGlobalObject:()Lcom/oracle/truffle/api/object/DynamicObject;
            astore 1 /* globalObject */
        start local 1 // com.oracle.truffle.api.object.DynamicObject globalObject
         2: .line 509
            aload 1 /* globalObject */
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 1 // com.oracle.truffle.api.object.DynamicObject globalObject
         3: .line 510
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0             e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            2    3     1  globalObject  Lcom/oracle/truffle/api/object/DynamicObject;

  private static void lambda$2(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 513
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 514
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$8(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 524
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            instanceof java.lang.Object[]
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 525
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 1 /* vals */
        start local 1 // java.lang.Object[] vals
         2: .line 526
            aload 1 /* vals */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 1 // java.lang.Object[] vals
         3: .line 527
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            2    3     1  vals  [Ljava/lang/Object;

  private static void lambda$7(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 530
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            instanceof java.lang.Object[]
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 531
            aload 0 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 1 /* vals */
        start local 1 // java.lang.Object[] vals
         2: .line 532
            aload 1 /* vals */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.runtime.objects.JSDynamicObject.isJSDynamicObject:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         3: .line 533
            aload 1 /* vals */
            iconst_0
            aaload
            getstatic com.oracle.truffle.js.runtime.objects.Undefined.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
            if_acmpeq 4
            iconst_1
            goto 5
      StackMap locals: java.lang.Object[]
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: invokestatic org.junit.Assert.assertTrue:(Z)V
         6: .line 534
            aload 1 /* vals */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        end local 1 // java.lang.Object[] vals
         7: .line 535
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            2    7     1  vals  [Ljava/lang/Object;

  private static void lambda$9(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=3, args_size=3
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        start local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent c
         0: .line 249
            aload 1 /* e */
            ldc "declarationName"
            aload 0
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 250
            return
        end local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent c
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            0    2     2     c  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;

  private static void lambda$10(java.lang.Object, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=3, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 450
            aload 1 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            instanceof java.lang.Object[]
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 451
            aload 1 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 2 /* vals */
        start local 2 // java.lang.Object[] vals
         2: .line 452
            aload 2 /* vals */
            iconst_0
            aaload
            aload 0
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 2 // java.lang.Object[] vals
         3: .line 453
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            2    3     2  vals  [Ljava/lang/Object;

  private static void lambda$11(com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 458
            aload 1 /* e */
            ldc "literalType"
            aload 0
            invokevirtual com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.name:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 459
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static java.util.function.Consumer lambda$12(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/function/Consumer;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String e
         0: .line 464
            aload 0 /* e */
            invokedynamic accept(Ljava/lang/String;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$13(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            areturn
        end local 0 // java.lang.String e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Ljava/lang/String;

  private static java.util.function.Consumer lambda$14(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/function/Consumer;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.String e
         0: .line 473
            aload 0 /* e */
            invokedynamic accept(Ljava/lang/String;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$15(Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            areturn
        end local 0 // java.lang.String e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     e  Ljava/lang/String;

  private static void lambda$16(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
         0: .line 518
            aload 1 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         1: .line 519
            aload 1 /* e */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast com.oracle.truffle.api.object.DynamicObject
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.getName:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/lang/String;
            aload 0
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         2: .line 520
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     1     e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private void lambda$17(java.lang.String, java.lang.Object, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        start local 4 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
         0: .line 539
            aload 3 /* e */
            ldc "key"
            aload 1
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 540
            aload 4 /* write */
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertGlobalObjectInput:Ljava/util/function/Consumer;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         2: .line 541
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag;
            aload 2
            invokedynamic accept(Ljava/lang/Object;)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/js/test/instrumentation/FineGrainedAccessTest.lambda$18(Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
         3: .line 549
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         4: .line 550
            aload 4 /* write */
            aload 2
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/lang/Object;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         5: .line 551
            return
        end local 4 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
        end local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    6     3      e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            0    6     4  write  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;

  private void lambda$19(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        start local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
         0: .line 556
            aload 3 /* write */
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertGlobalObjectInput:Ljava/util/function/Consumer;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         1: .line 557
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            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/js/test/instrumentation/FineGrainedAccessTest.lambda$20(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V (6)
                  (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:(Ljava/util/function/Consumer;)V
         2: .line 563
            aload 2 /* e */
            ldc "key"
            aload 1
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 564
            aload 3 /* write */
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSFunctionInput:Ljava/util/function/Consumer;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         4: .line 565
            return
        end local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
        end local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    5     2      e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            0    5     3  write  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;

  private void lambda$21(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;)V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
        start local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        start local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
         0: .line 570
            aload 2 /* e */
            ldc "key"
            aload 1
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 571
            aload 3 /* write */
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertGlobalObjectInput:Ljava/util/function/Consumer;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         2: .line 572
            aload 0 /* this */
            ldc Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.enter:(Ljava/lang/Class;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.exit:()V
         3: .line 573
            aload 3 /* write */
            getstatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertJSArrayInput:Ljava/util/function/Consumer;
            invokevirtual com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent.input:(Ljava/util/function/Consumer;)Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;
            pop
         4: .line 574
            return
        end local 3 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent write
        end local 2 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest;
            0    5     2      e  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            0    5     3  write  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$AssertedEvent;

  private static void lambda$13(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event x
         0: .line 465
            aload 1 /* x */
            ldc "key"
            aload 0
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 466
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     x  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$15(java.lang.String, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Ljava/lang/String;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event x
         0: .line 474
            aload 1 /* x */
            ldc "name"
            aload 0
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 475
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event x
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     1     x  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$18(java.lang.Object, com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Ljava/lang/Object;Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e2
         0: .line 542
            aload 0
            instanceof java.lang.Integer
            ifeq 3
         1: .line 543
            aload 1 /* e2 */
            ldc "literalType"
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.NumericLiteral:Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;
            invokevirtual com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.name:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         2: .line 544
            goto 8
      StackMap locals:
      StackMap stack:
         3: aload 0
            instanceof java.lang.Boolean
            ifeq 6
         4: .line 545
            aload 1 /* e2 */
            ldc "literalType"
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.BooleanLiteral:Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;
            invokevirtual com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.name:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 546
            goto 8
      StackMap locals:
      StackMap stack:
         6: aload 0
            instanceof java.lang.String
            ifeq 8
         7: .line 547
            aload 1 /* e2 */
            ldc "literalType"
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.StringLiteral:Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;
            invokevirtual com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.name:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         8: .line 549
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e2
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     1    e2  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;

  private static void lambda$20(com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event);
    descriptor: (Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e1
         0: .line 558
            aload 0 /* e1 */
            ldc "literalType"
            getstatic com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.FunctionLiteral:Lcom/oracle/truffle/js/nodes/instrumentation/JSTags$LiteralTag$Type;
            invokevirtual com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type.name:()Ljava/lang/String;
            invokestatic com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest.assertAttribute:(Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;Ljava/lang/String;Ljava/lang/Object;)V
         1: .line 559
            aload 0 /* e1 */
            getfield com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event.val:Ljava/lang/Object;
            checkcast java.lang.Object[]
            astore 1 /* results */
        start local 1 // java.lang.Object[] results
         2: .line 560
            aload 1 /* results */
            arraylength
            iconst_1
            if_icmpne 3
            iconst_1
            goto 4
      StackMap locals: java.lang.Object[]
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 561
            aload 1 /* results */
            iconst_0
            aaload
            invokestatic com.oracle.truffle.js.runtime.builtins.JSFunction.isJSFunction:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
        end local 1 // java.lang.Object[] results
         6: .line 562
            return
        end local 0 // com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event e1
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0       e1  Lcom/oracle/truffle/js/test/instrumentation/FineGrainedAccessTest$Event;
            2    6     1  results  [Ljava/lang/Object;
}
SourceFile: "FineGrainedAccessTest.java"
NestMembers:
  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$1  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$1$1  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind
InnerClasses:
  public final Builder = com.oracle.truffle.api.instrumentation.SourceSectionFilter$Builder of com.oracle.truffle.api.instrumentation.SourceSectionFilter
  public final ExpressionTag = com.oracle.truffle.api.instrumentation.StandardTags$ExpressionTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final RootBodyTag = com.oracle.truffle.api.instrumentation.StandardTags$RootBodyTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final RootTag = com.oracle.truffle.api.instrumentation.StandardTags$RootTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final StatementTag = com.oracle.truffle.api.instrumentation.StandardTags$StatementTag of com.oracle.truffle.api.instrumentation.StandardTags
  public final Env = com.oracle.truffle.api.instrumentation.TruffleInstrument$Env of com.oracle.truffle.api.instrumentation.TruffleInstrument
  public final DeclareTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$DeclareTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  public final InputNodeTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$InputNodeTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  public final LiteralTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  public final Type = com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag$Type of com.oracle.truffle.js.nodes.instrumentation.JSTags$LiteralTag
  public final WritePropertyTag = com.oracle.truffle.js.nodes.instrumentation.JSTags$WritePropertyTag of com.oracle.truffle.js.nodes.instrumentation.JSTags
  com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$1
  AssertedEvent = com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$AssertedEvent of com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest
  protected Event = com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event of com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest
  final Kind = com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event$Kind of com.oracle.truffle.js.test.instrumentation.FineGrainedAccessTest$Event
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public final Builder = org.graalvm.polyglot.Context$Builder of org.graalvm.polyglot.Context