public class com.oracle.truffle.js.test.interop.ClassFilterInteropTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.test.interop.ClassFilterInteropTest
  super_class: java.lang.Object
{
  public org.junit.rules.ExpectedException expectedException;
    descriptor: Lorg/junit/rules/ExpectedException;
    flags: (0x0001) ACC_PUBLIC
    RuntimeVisibleAnnotations: 
      org.junit.Rule()

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 67
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 69
            aload 0 /* this */
            invokestatic org.junit.rules.ExpectedException.none:()Lorg/junit/rules/ExpectedException;
            putfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
         2: .line 67
            return
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;

  public void testHostClassLookupPositive();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 101
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokedynamic test()Ljava/util/function/Predicate;
              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;)Z
                  com/oracle/truffle/js/test/interop/ClassFilterInteropTest.lambda$0(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostClassLookup:(Ljava/util/function/Predicate;)Lorg/graalvm/polyglot/Context$Builder;
         2: .line 103
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         3: .line 101
            astore 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         4: .line 104
            aload 3 /* context */
            ldc "js"
            ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod() + MyClass.staticAccessibleMethod() +(new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass()).accessibleMethod() +com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.staticAccessibleMethod();"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         5: .line 108
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
         6: .line 104
            istore 4 /* result */
        start local 4 // int result
         7: .line 109
            ldc 170
            iload 4 /* result */
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        end local 4 // int result
         8: .line 110
            aload 3 /* context */
            ifnull 14
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 14
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
         9: astore 1
            aload 3 /* context */
            ifnull 10
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        10: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 1
            ifnonnull 12
            aload 2
            astore 1
            goto 13
      StackMap locals:
      StackMap stack:
        12: aload 1
            aload 2
            if_acmpeq 13
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        13: aload 1
            athrow
        14: .line 111
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   15     0     this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            4   10     3  context  Lorg/graalvm/polyglot/Context;
            7    8     4   result  I
      Exception table:
        from    to  target  type
           4     8       9  any
           1    11      11  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testHostClassLookupNegativeInaccessibleMethod();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 119
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/polyglot/PolyglotException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 120
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc "Arity error - expected: 0 actual: 1"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         2: .line 121
            aconst_null
            astore 1
            aconst_null
            astore 2
         3: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokedynamic test()Ljava/util/function/Predicate;
              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;)Z
                  com/oracle/truffle/js/test/interop/ClassFilterInteropTest.lambda$1(Ljava/lang/String;)Z (6)
                  (Ljava/lang/String;)Z
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostClassLookup:(Ljava/util/function/Predicate;)Lorg/graalvm/polyglot/Context$Builder;
         4: .line 123
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
         5: .line 121
            astore 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         6: .line 124
            aload 3 /* context */
            ldc "js"
            ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod(42);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         7: .line 126
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            pop
         8: .line 127
            ldc "Exception should have been thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         9: .line 128
            aload 3 /* context */
            ifnull 15
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 15
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        10: astore 1
            aload 3 /* context */
            ifnull 11
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        11: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: astore 2
            aload 1
            ifnonnull 13
            aload 2
            astore 1
            goto 14
      StackMap locals:
      StackMap stack:
        13: aload 1
            aload 2
            if_acmpeq 14
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        14: aload 1
            athrow
        15: .line 129
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   16     0     this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            6   11     3  context  Lorg/graalvm/polyglot/Context;
      Exception table:
        from    to  target  type
           6     9      10  any
           3    12      12  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testHostClassLookupNegativeHostClassLookupDisallowed1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 142
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/polyglot/PolyglotException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 143
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc "ReferenceError: Java is not defined"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         2: .line 144
            aconst_null
            astore 1
            aconst_null
            astore 2
         3: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         4: .line 145
            aload 3 /* context */
            ldc "js"
            ldc "var MyClass = Java.type('com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass');(new MyClass()).accessibleMethod();"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         5: .line 147
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            pop
         6: .line 148
            ldc "Exception should have been thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         7: .line 149
            aload 3 /* context */
            ifnull 13
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 13
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
         8: astore 1
            aload 3 /* context */
            ifnull 9
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
         9: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 2
            aload 1
            ifnonnull 11
            aload 2
            astore 1
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 1
            aload 2
            if_acmpeq 12
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
        13: .line 150
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            4    9     3  context  Lorg/graalvm/polyglot/Context;
      Exception table:
        from    to  target  type
           4     7       8  any
           3    10      10  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testHostClassLookupNegativeHostClassLookupDisallowed2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 163
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/polyglot/PolyglotException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 164
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc "ReferenceError: com is not defined"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         2: .line 165
            aconst_null
            astore 1
            aconst_null
            astore 2
         3: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         4: .line 166
            aload 3 /* context */
            ldc "js"
            ldc "(new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass()).accessibleMethod()"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         5: .line 168
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            pop
         6: .line 169
            ldc "Exception should have been thrown."
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         7: .line 170
            aload 3 /* context */
            ifnull 13
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 13
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
         8: astore 1
            aload 3 /* context */
            ifnull 9
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
         9: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 2
            aload 1
            ifnonnull 11
            aload 2
            astore 1
            goto 12
      StackMap locals:
      StackMap stack:
        11: aload 1
            aload 2
            if_acmpeq 12
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
        13: .line 171
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   14     0     this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            4    9     3  context  Lorg/graalvm/polyglot/Context;
      Exception table:
        from    to  target  type
           4     7       8  any
           3    10      10  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testPublicAccessIsPowerfull();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 180
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* hostAccess */
        start local 1 // org.graalvm.polyglot.HostAccess hostAccess
         1: .line 181
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* hostAccess */
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* context */
        start local 4 // org.graalvm.polyglot.Context context
         3: .line 182
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 5 /* bindings */
        start local 5 // org.graalvm.polyglot.Value bindings
         4: .line 183
            new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
            dup
            invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
            astore 6 /* myClass */
        start local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
         5: .line 184
            aload 5 /* bindings */
            ldc "myClass"
            aload 6 /* myClass */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 185
            aload 4 /* context */
            ldc "js"
            ldc "myClass.getClass().getClassLoader().loadClass('java.lang.Math').getDeclaredMethods()[0].invoke(null, 42) +myClass.getClass().getClass().static.forName('java.lang.Math').getDeclaredMethods()[0].invoke(null, 43);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         7: .line 189
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
         8: .line 185
            istore 7 /* result */
        start local 7 // int result
         9: .line 190
            ldc 85
            iload 7 /* result */
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        end local 7 // int result
        end local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
        end local 5 // org.graalvm.polyglot.Value bindings
        10: .line 191
            aload 4 /* context */
            ifnull 16
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 4 /* context */
            ifnull 12
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        12: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 3
            aload 2
            ifnonnull 14
            aload 3
            astore 2
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 2
            aload 3
            if_acmpeq 15
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 2
            athrow
        16: .line 192
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess hostAccess
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   17     0        this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            1   17     1  hostAccess  Lorg/graalvm/polyglot/HostAccess;
            3   12     4     context  Lorg/graalvm/polyglot/Context;
            4   10     5    bindings  Lorg/graalvm/polyglot/Value;
            5   10     6     myClass  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
            9   10     7      result  I
      Exception table:
        from    to  target  type
           3    10      11  any
           2    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testPublicAccessIsReallyPowerfull();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=11, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 201
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* hostAccess */
        start local 1 // org.graalvm.polyglot.HostAccess hostAccess
         1: .line 202
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* hostAccess */
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* context */
        start local 4 // org.graalvm.polyglot.Context context
         3: .line 203
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 5 /* bindings */
        start local 5 // org.graalvm.polyglot.Value bindings
         4: .line 204
            new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
            dup
            invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
            astore 6 /* myClass */
        start local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
         5: .line 205
            aload 5 /* bindings */
            ldc "myClass"
            aload 6 /* myClass */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         6: .line 206
            ldc "os.name"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 7 /* osName */
        start local 7 // java.lang.String osName
         7: .line 207
            aload 7 /* osName */
            ifnull 8
            aload 7 /* osName */
            invokevirtual java.lang.String.toLowerCase:()Ljava/lang/String;
            ldc "windows"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifeq 8
            iconst_1
            goto 9
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String
      StackMap stack:
         8: iconst_0
      StackMap locals:
      StackMap stack: int
         9: istore 8 /* isWindows */
        start local 8 // boolean isWindows
        10: .line 208
            aload 4 /* context */
            ldc "js"
            new java.lang.StringBuilder
            dup
            ldc "function readIs(is) { var r = \"\"; while(true) { var c = is.read(); if(c == -1) { break; } r += String.fromCharCode(c) } is.close();return r; } var runtime = myClass.getClass().getClassLoader().loadClass('java.lang.Runtime').getDeclaredMethod('getRuntime').invoke(null);var process = runtime.getClass().getMethod('exec', myClass.getClass().getClassLoader().loadClass('java.lang.String')).invoke(runtime,'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        11: .line 223
            iload 8 /* isWindows */
            ifeq 12
            ldc "cmd /C cd"
            goto 13
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String int
      StackMap stack: org.graalvm.polyglot.Context java.lang.String java.lang.StringBuilder
        12: ldc "pwd"
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass java.lang.String int
      StackMap stack: org.graalvm.polyglot.Context java.lang.String java.lang.StringBuilder java.lang.String
        13: invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "');"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        14: .line 224
            ldc "process.getOutputStream().close();"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        15: .line 225
            ldc "var stdout = readIs(process.getInputStream());"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        16: .line 226
            ldc "var stderr = readIs(process.getErrorStream());"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        17: .line 227
            ldc "process.waitFor();"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        18: .line 228
            ldc "stdout;"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        19: .line 208
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
        20: .line 228
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
        21: .line 208
            astore 9 /* result */
        start local 9 // java.lang.String result
        22: .line 229
            ldc "user.dir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            astore 10 /* userDir */
        start local 10 // java.lang.String userDir
        23: .line 230
            aload 9 /* result */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            aload 10 /* userDir */
            invokestatic org.hamcrest.core.StringContains.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
        end local 10 // java.lang.String userDir
        end local 9 // java.lang.String result
        end local 8 // boolean isWindows
        end local 7 // java.lang.String osName
        end local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
        end local 5 // org.graalvm.polyglot.Value bindings
        24: .line 231
            aload 4 /* context */
            ifnull 30
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 30
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        25: astore 2
            aload 4 /* context */
            ifnull 26
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        26: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        27: astore 3
            aload 2
            ifnonnull 28
            aload 3
            astore 2
            goto 29
      StackMap locals:
      StackMap stack:
        28: aload 2
            aload 3
            if_acmpeq 29
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        29: aload 2
            athrow
        30: .line 232
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess hostAccess
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   31     0        this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            1   31     1  hostAccess  Lorg/graalvm/polyglot/HostAccess;
            3   26     4     context  Lorg/graalvm/polyglot/Context;
            4   24     5    bindings  Lorg/graalvm/polyglot/Value;
            5   24     6     myClass  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
            7   24     7      osName  Ljava/lang/String;
           10   24     8   isWindows  Z
           22   24     9      result  Ljava/lang/String;
           23   24    10     userDir  Ljava/lang/String;
      Exception table:
        from    to  target  type
           3    24      25  any
           2    27      27  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testPublicAccessIsLessPowerfullWithDeniedClassAccess1();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 239
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/polyglot/PolyglotException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 240
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc "Unknown identifier: getClassLoader"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         2: .line 241
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Ljava/lang/Class;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.denyAccess:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* hostAccess */
        start local 1 // org.graalvm.polyglot.HostAccess hostAccess
         3: .line 242
            aconst_null
            astore 2
            aconst_null
            astore 3
         4: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* hostAccess */
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* context */
        start local 4 // org.graalvm.polyglot.Context context
         5: .line 243
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 5 /* bindings */
        start local 5 // org.graalvm.polyglot.Value bindings
         6: .line 244
            new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
            dup
            invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
            astore 6 /* myClass */
        start local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
         7: .line 245
            aload 5 /* bindings */
            ldc "myClass"
            aload 6 /* myClass */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         8: .line 246
            aload 4 /* context */
            ldc "js"
            ldc "myClass.getClass().getClassLoader().loadClass('java.lang.Math').getDeclaredMethods()[0].invoke(null, 42);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         9: .line 248
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            pop
        10: .line 249
            ldc "Exception should have been thrown"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        end local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
        end local 5 // org.graalvm.polyglot.Value bindings
        11: .line 250
            aload 4 /* context */
            ifnull 17
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 17
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        12: astore 2
            aload 4 /* context */
            ifnull 13
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 3
            aload 2
            ifnonnull 15
            aload 3
            astore 2
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 2
            aload 3
            if_acmpeq 16
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
        17: .line 251
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess hostAccess
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            3   18     1  hostAccess  Lorg/graalvm/polyglot/HostAccess;
            5   13     4     context  Lorg/graalvm/polyglot/Context;
            6   11     5    bindings  Lorg/graalvm/polyglot/Value;
            7   11     6     myClass  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
      Exception table:
        from    to  target  type
           5    11      12  any
           4    14      14  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testPublicAccessIsLessPowerfullWithDeniedClassAccess2();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
         0: .line 258
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc Lorg/graalvm/polyglot/PolyglotException;
            invokevirtual org.junit.rules.ExpectedException.expect:(Ljava/lang/Class;)V
         1: .line 259
            aload 0 /* this */
            getfield com.oracle.truffle.js.test.interop.ClassFilterInteropTest.expectedException:Lorg/junit/rules/ExpectedException;
            ldc "Unknown identifier: forName"
            invokevirtual org.junit.rules.ExpectedException.expectMessage:(Ljava/lang/String;)V
         2: .line 260
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowPublicAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowArrayAccess:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Ljava/lang/Class;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.denyAccess:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* hostAccess */
        start local 1 // org.graalvm.polyglot.HostAccess hostAccess
         3: .line 261
            aconst_null
            astore 2
            aconst_null
            astore 3
         4: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* hostAccess */
            invokevirtual org.graalvm.polyglot.Context$Builder.allowHostAccess:(Lorg/graalvm/polyglot/HostAccess;)Lorg/graalvm/polyglot/Context$Builder;
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 4 /* context */
        start local 4 // org.graalvm.polyglot.Context context
         5: .line 262
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 5 /* bindings */
        start local 5 // org.graalvm.polyglot.Value bindings
         6: .line 263
            new com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
            dup
            invokespecial com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass.<init>:()V
            astore 6 /* myClass */
        start local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
         7: .line 264
            aload 5 /* bindings */
            ldc "myClass"
            aload 6 /* myClass */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         8: .line 265
            aload 4 /* context */
            ldc "js"
            ldc "myClass.getClass().getClass().static.forName('java.lang.Math').getDeclaredMethods()[0].invoke(null, 43);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         9: .line 267
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            pop
        10: .line 268
            ldc "Exception should have been thrown"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        end local 6 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass myClass
        end local 5 // org.graalvm.polyglot.Value bindings
        11: .line 269
            aload 4 /* context */
            ifnull 17
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 17
      StackMap locals: com.oracle.truffle.js.test.interop.ClassFilterInteropTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        12: astore 2
            aload 4 /* context */
            ifnull 13
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        13: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        14: astore 3
            aload 2
            ifnonnull 15
            aload 3
            astore 2
            goto 16
      StackMap locals:
      StackMap stack:
        15: aload 2
            aload 3
            if_acmpeq 16
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        16: aload 2
            athrow
        17: .line 270
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess hostAccess
        end local 0 // com.oracle.truffle.js.test.interop.ClassFilterInteropTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest;
            3   18     1  hostAccess  Lorg/graalvm/polyglot/HostAccess;
            5   13     4     context  Lorg/graalvm/polyglot/Context;
            6   11     5    bindings  Lorg/graalvm/polyglot/Value;
            7   11     6     myClass  Lcom/oracle/truffle/js/test/interop/ClassFilterInteropTest$MyClass;
      Exception table:
        from    to  target  type
           5    11      12  any
           4    14      14  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static boolean lambda$0(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String c
         0: .line 101
            aload 0 /* c */
            ldc "com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
         1: .line 103
            ireturn
        end local 0 // java.lang.String c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     c  Ljava/lang/String;

  private static boolean lambda$1(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String c
         0: .line 121
            aload 0 /* c */
            ldc "com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
         1: .line 123
            ireturn
        end local 0 // java.lang.String c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0     c  Ljava/lang/String;
}
SourceFile: "ClassFilterInteropTest.java"
NestMembers:
  com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass
InnerClasses:
  public MyClass = com.oracle.truffle.js.test.interop.ClassFilterInteropTest$MyClass of com.oracle.truffle.js.test.interop.ClassFilterInteropTest
  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
  public final Builder = org.graalvm.polyglot.HostAccess$Builder of org.graalvm.polyglot.HostAccess