public class com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
  super_class: java.lang.Object
{
  static final java.lang.String EXPECTED_EXCEPTION_MESSAGE;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "This will be swallowed :("

  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.interop.JavaScriptHostInteropTest this
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest;

  public void testArityError();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
         0: .line 92
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/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
         2: .line 93
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 24
         4: .line 95
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest top java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context int
      StackMap stack:
            iload 5 /* i */
            ifne 7
         5: .line 96
            new com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj
            dup
            invokespecial com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj.<init>:()V
            astore 6 /* hostObj */
        start local 6 // java.lang.Object hostObj
         6: .line 97
            goto 11
        end local 6 // java.lang.Object hostObj
         7: .line 98
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj
            dup
            invokespecial com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj.<init>:()V
            astore 7 /* delegate */
        start local 7 // java.lang.Object delegate
         8: .line 99
            ldc Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest$MyHostIntf;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         9: .line 100
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest$MyHostIntf;
            aastore
            aload 7 /* delegate */
            invokedynamic invoke(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
              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/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$0(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (6)
                  (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
        10: .line 99
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            astore 6 /* hostObj */
        end local 7 // java.lang.Object delegate
        start local 6 // java.lang.Object hostObj
        11: .line 102
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            ldc "hostobj"
            aload 6 /* hostObj */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 103
            aload 6 /* hostObj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            astore 7 /* expectedClassName */
        start local 7 // java.lang.String expectedClassName
        13: .line 105
            aload 7 /* expectedClassName */
            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/interop/JavaScriptHostInteropTest.lambda$1(Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V (6)
                  (Lorg/graalvm/polyglot/PolyglotException;)V
            astore 1 /* expectedException */
        start local 1 // java.util.function.Consumer expectedException
        14: .line 110
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$2(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        15: .line 111
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$3(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
        16: .line 114
            aload 1 /* expectedException */
        17: .line 111
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        18: .line 116
            aload 7 /* expectedClassName */
            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/interop/JavaScriptHostInteropTest.lambda$4(Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V (6)
                  (Lorg/graalvm/polyglot/PolyglotException;)V
            astore 1 /* expectedException */
        19: .line 121
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$5(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        20: .line 122
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$6(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        21: .line 123
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$7(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        22: .line 124
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$8(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        end local 7 // java.lang.String expectedClassName
        end local 6 // java.lang.Object hostObj
        23: .line 93
            iinc 5 /* i */ 1
        end local 1 // java.util.function.Consumer expectedException
      StackMap locals:
      StackMap stack:
        24: iload 5 /* i */
            iconst_2
            if_icmplt 4
        end local 5 // int i
        25: .line 126
            aload 4 /* context */
            ifnull 31
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 31
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest top java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        26: astore 2
            aload 4 /* context */
            ifnull 27
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        27: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        28: astore 3
            aload 2
            ifnonnull 29
            aload 3
            astore 2
            goto 30
      StackMap locals:
      StackMap stack:
        29: aload 2
            aload 3
            if_acmpeq 30
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        30: aload 2
            athrow
        31: .line 127
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   32     0               this  Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest;
           14   24     1  expectedException  Ljava/util/function/Consumer<Lorg/graalvm/polyglot/PolyglotException;>;
            2   27     4            context  Lorg/graalvm/polyglot/Context;
            3   25     5                  i  I
            6    7     6            hostObj  Ljava/lang/Object;
           11   23     6            hostObj  Ljava/lang/Object;
            8   11     7           delegate  Ljava/lang/Object;
           13   23     7  expectedClassName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2    25      26  any
           1    28      28  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testArgumentTypeError();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
         0: .line 132
            aconst_null
            astore 2
            aconst_null
            astore 3
         1: iconst_0
            anewarray java.lang.String
            invokestatic com.oracle.truffle.js.test.JSTest.newContextBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/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
         2: .line 133
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         3: goto 29
         4: .line 135
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest top java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context int
      StackMap stack:
            iload 5 /* i */
            ifne 7
         5: .line 136
            new com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj
            dup
            invokespecial com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj.<init>:()V
            astore 6 /* hostObj */
        start local 6 // java.lang.Object hostObj
         6: .line 137
            goto 11
        end local 6 // java.lang.Object hostObj
         7: .line 138
      StackMap locals:
      StackMap stack:
            new com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj
            dup
            invokespecial com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj.<init>:()V
            astore 7 /* delegate */
        start local 7 // java.lang.Object delegate
         8: .line 139
            ldc Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest$MyHostIntf;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
         9: .line 140
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest$MyHostIntf;
            aastore
            aload 7 /* delegate */
            invokedynamic invoke(Ljava/lang/Object;)Ljava/lang/reflect/InvocationHandler;
              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/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$9(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (6)
                  (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
        10: .line 139
            invokestatic java.lang.reflect.Proxy.newProxyInstance:(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
            astore 6 /* hostObj */
        end local 7 // java.lang.Object delegate
        start local 6 // java.lang.Object hostObj
        11: .line 142
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            ldc "hostobj"
            aload 6 /* hostObj */
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
        12: .line 143
            aload 6 /* hostObj */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            astore 7 /* expectedClassName */
        start local 7 // java.lang.String expectedClassName
        13: .line 145
            aload 7 /* expectedClassName */
            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/interop/JavaScriptHostInteropTest.lambda$10(Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V (6)
                  (Lorg/graalvm/polyglot/PolyglotException;)V
            astore 1 /* expectedException */
        start local 1 // java.util.function.Consumer expectedException
        14: .line 150
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$11(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        15: .line 151
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$12(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
        16: .line 153
            aload 1 /* expectedException */
        17: .line 151
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        18: .line 155
            aload 4 /* context */
            ldc "js"
            ldc "hostobj.foo(42);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
        19: .line 156
            aload 4 /* context */
            ldc "js"
            ldc "var foo = hostobj.foo;\nfoo(42);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
        20: .line 160
            aload 7 /* expectedClassName */
            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/interop/JavaScriptHostInteropTest.lambda$13(Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V (6)
                  (Lorg/graalvm/polyglot/PolyglotException;)V
            astore 1 /* expectedException */
        21: .line 165
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$14(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        22: .line 166
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$15(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        23: .line 168
            aload 7 /* expectedClassName */
            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/interop/JavaScriptHostInteropTest.lambda$16(Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V (6)
                  (Lorg/graalvm/polyglot/PolyglotException;)V
            astore 1 /* expectedException */
        24: .line 174
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$17(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        25: .line 175
            aload 4 /* context */
            invokedynamic run(Lorg/graalvm/polyglot/Context;)Ljava/lang/Runnable;
              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:
                  ()V
                  com/oracle/truffle/js/test/interop/JavaScriptHostInteropTest.lambda$18(Lorg/graalvm/polyglot/Context;)V (6)
                  ()V
            aload 1 /* expectedException */
            invokestatic com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest.assertThrows:(Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
        26: .line 177
            aload 4 /* context */
            ldc "js"
            ldc "hostobj.write(JSON.stringify(6), 'eight', null)"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
        27: .line 178
            aload 4 /* context */
            ldc "js"
            ldc "hostobj['write'](JSON.stringify(6), 'eight', null)"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
        end local 7 // java.lang.String expectedClassName
        end local 6 // java.lang.Object hostObj
        28: .line 133
            iinc 5 /* i */ 1
        end local 1 // java.util.function.Consumer expectedException
      StackMap locals:
      StackMap stack:
        29: iload 5 /* i */
            iconst_2
            if_icmplt 4
        end local 5 // int i
        30: .line 180
            aload 4 /* context */
            ifnull 36
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 36
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest top java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        31: astore 2
            aload 4 /* context */
            ifnull 32
            aload 4 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        32: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        33: astore 3
            aload 2
            ifnonnull 34
            aload 3
            astore 2
            goto 35
      StackMap locals:
      StackMap stack:
        34: aload 2
            aload 3
            if_acmpeq 35
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        35: aload 2
            athrow
        36: .line 181
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   37     0               this  Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest;
           14   29     1  expectedException  Ljava/util/function/Consumer<Lorg/graalvm/polyglot/PolyglotException;>;
            2   32     4            context  Lorg/graalvm/polyglot/Context;
            3   30     5                  i  I
            6    7     6            hostObj  Ljava/lang/Object;
           11   28     6            hostObj  Ljava/lang/Object;
            8   11     7           delegate  Ljava/lang/Object;
           13   28     7  expectedClassName  Ljava/lang/String;
      Exception table:
        from    to  target  type
           2    30      31  any
           1    33      33  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testHostClassCastException();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
         0: .line 197
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/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 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         2: .line 198
            aload 3 /* context */
            ldc "js"
            invokevirtual org.graalvm.polyglot.Context.getBindings:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            ldc "hello"
            new com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$Hello
            dup
            invokespecial com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$Hello.<init>:()V
            invokevirtual org.graalvm.polyglot.Value.putMember:(Ljava/lang/String;Ljava/lang/Object;)V
         3: .line 200
            aload 3 /* context */
            ldc "js"
            ldc "class Human {\n  constructor(name) {\n    this.name = name;\n  }\n\n  hello() {\n    return this.name;\n  }\n}\n\nconst human = new Human(\"timmy\");\n\nhello.thisIsFine(human);\nhello.thisWillBreak(human);"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            pop
         4: .line 214
            ldc "should have thrown"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         5: .line 215
            goto 10
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: org.graalvm.polyglot.PolyglotException
         6: astore 4 /* e */
        start local 4 // org.graalvm.polyglot.PolyglotException e
         7: .line 216
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isHostException:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 217
            ldc Ljava/lang/ClassCastException;
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 218
            ldc "This will be swallowed :("
            aload 4 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.asHostException:()Ljava/lang/Throwable;
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // org.graalvm.polyglot.PolyglotException e
        10: .line 220
      StackMap locals:
      StackMap stack:
            aload 3 /* context */
            ifnull 16
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 1
            aload 3 /* context */
            ifnull 12
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 1
            ifnonnull 14
            aload 2
            astore 1
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 1
            aload 2
            if_acmpeq 15
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 1
            athrow
        16: .line 221
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   17     0     this  Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest;
            2   12     3  context  Lorg/graalvm/polyglot/Context;
            7   10     4        e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           3     5       6  Class org.graalvm.polyglot.PolyglotException
           2    10      11  any
           1    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void assertThrows(java.lang.Runnable, java.util.function.Consumer<org.graalvm.polyglot.PolyglotException>);
    descriptor: (Ljava/lang/Runnable;Ljava/util/function/Consumer;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // java.lang.Runnable test
        start local 1 // java.util.function.Consumer exceptionVerifier
         0: .line 225
            aload 0 /* test */
            invokeinterface java.lang.Runnable.run:()V
         1: .line 226
            ldc "should have thrown"
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         2: .line 227
            goto 6
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         3: astore 2 /* e */
        start local 2 // org.graalvm.polyglot.PolyglotException e
         4: .line 228
            aload 2 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.isGuestException:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         5: .line 229
            aload 1 /* exceptionVerifier */
            aload 2 /* e */
            invokeinterface java.util.function.Consumer.accept:(Ljava/lang/Object;)V
        end local 2 // org.graalvm.polyglot.PolyglotException e
         6: .line 231
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.function.Consumer exceptionVerifier
        end local 0 // java.lang.Runnable test
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    7     0               test  Ljava/lang/Runnable;
            0    7     1  exceptionVerifier  Ljava/util/function/Consumer<Lorg/graalvm/polyglot/PolyglotException;>;
            4    6     2                  e  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           0     2       3  Class org.graalvm.polyglot.PolyglotException
    Signature: (Ljava/lang/Runnable;Ljava/util/function/Consumer<Lorg/graalvm/polyglot/PolyglotException;>;)V
    MethodParameters:
                   Name  Flags
      test               
      exceptionVerifier  

  public void hostObjectIdentity();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=8, args_size=1
        start local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
         0: .line 235
            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;
            getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/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 3 /* context */
        start local 3 // org.graalvm.polyglot.Context context
         2: .line 236
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            astore 4 /* proxy1 */
        start local 4 // java.lang.Object proxy1
         3: .line 237
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            astore 5 /* proxy2 */
        start local 5 // java.lang.Object proxy2
         4: .line 239
            aload 3 /* context */
            ldc "js"
            ldc "(function(a, b){return a == b;})"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 6 /* equals */
        start local 6 // org.graalvm.polyglot.Value equals
         5: .line 240
            aload 3 /* context */
            ldc "js"
            ldc "(function(a, b){return a === b;})"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 7 /* identical */
        start local 7 // org.graalvm.polyglot.Value identical
         6: .line 242
            aload 6 /* equals */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* proxy1 */
            aastore
            dup
            iconst_1
            aload 4 /* proxy1 */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         7: .line 243
            aload 7 /* identical */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* proxy1 */
            aastore
            dup
            iconst_1
            aload 4 /* proxy1 */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 244
            aload 6 /* equals */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* proxy1 */
            aastore
            dup
            iconst_1
            aload 5 /* proxy2 */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         9: .line 245
            aload 7 /* identical */
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* proxy1 */
            aastore
            dup
            iconst_1
            aload 5 /* proxy2 */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asBoolean:()Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        end local 7 // org.graalvm.polyglot.Value identical
        end local 6 // org.graalvm.polyglot.Value equals
        end local 5 // java.lang.Object proxy2
        end local 4 // java.lang.Object proxy1
        10: .line 246
            aload 3 /* context */
            ifnull 16
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals: com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        11: astore 1
            aload 3 /* context */
            ifnull 12
            aload 3 /* context */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 3 // org.graalvm.polyglot.Context context
      StackMap locals:
      StackMap stack:
        12: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 1
            ifnonnull 14
            aload 2
            astore 1
            goto 15
      StackMap locals:
      StackMap stack:
        14: aload 1
            aload 2
            if_acmpeq 15
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        15: aload 1
            athrow
        16: .line 247
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0       this  Lcom/oracle/truffle/js/test/interop/JavaScriptHostInteropTest;
            2   12     3    context  Lorg/graalvm/polyglot/Context;
            3   10     4     proxy1  Ljava/lang/Object;
            4   10     5     proxy2  Ljava/lang/Object;
            5   10     6     equals  Lorg/graalvm/polyglot/Value;
            6   10     7  identical  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           2    10      11  any
           1    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static java.lang.Object lambda$0(java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 1 // java.lang.Object proxy
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] args
         0: .line 100
            aload 2 /* method */
            aload 0
            aload 3 /* args */
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.Object proxy
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     1   proxy  Ljava/lang/Object;
            0    1     2  method  Ljava/lang/reflect/Method;
            0    1     3    args  [Ljava/lang/Object;
    Exceptions:
      throws java.lang.Throwable

  private static void lambda$1(java.lang.String, org.graalvm.polyglot.PolyglotException);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // org.graalvm.polyglot.PolyglotException e
         0: .line 106
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 0
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 107
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "foo"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         2: .line 108
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "Arity error"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         3: .line 109
            return
        end local 1 // org.graalvm.polyglot.PolyglotException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1     e  Lorg/graalvm/polyglot/PolyglotException;

  private static void lambda$2(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 110
            aload 0
            ldc "js"
            ldc "hostobj.foo();"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$3(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 111
            aload 0
            ldc "js"
            ldc "var foo = hostobj.foo;\nfoo();"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         1: .line 113
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$4(java.lang.String, org.graalvm.polyglot.PolyglotException);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // org.graalvm.polyglot.PolyglotException e
         0: .line 117
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 0
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 118
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "write"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         2: .line 119
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "Arity error"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         3: .line 120
            return
        end local 1 // org.graalvm.polyglot.PolyglotException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1     e  Lorg/graalvm/polyglot/PolyglotException;

  private static void lambda$5(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 121
            aload 0
            ldc "js"
            ldc "hostobj.write('a', 'b')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$6(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 122
            aload 0
            ldc "js"
            ldc "hostobj['write']('a', 'b')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$7(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 123
            aload 0
            ldc "js"
            ldc "hostobj.write('a', 'b', 'c', 'd')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$8(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 124
            aload 0
            ldc "js"
            ldc "hostobj['write']('a', 'b', 'c', 'd')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.Object lambda$9(java.lang.Object, java.lang.Object, java.lang.reflect.Method, java.lang.Object[]);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=4, args_size=4
        start local 1 // java.lang.Object proxy
        start local 2 // java.lang.reflect.Method method
        start local 3 // java.lang.Object[] args
         0: .line 140
            aload 2 /* method */
            aload 0
            aload 3 /* args */
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            areturn
        end local 3 // java.lang.Object[] args
        end local 2 // java.lang.reflect.Method method
        end local 1 // java.lang.Object proxy
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     1   proxy  Ljava/lang/Object;
            0    1     2  method  Ljava/lang/reflect/Method;
            0    1     3    args  [Ljava/lang/Object;
    Exceptions:
      throws java.lang.Throwable

  private static void lambda$10(java.lang.String, org.graalvm.polyglot.PolyglotException);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // org.graalvm.polyglot.PolyglotException e
         0: .line 146
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 0
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 147
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "foo"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         2: .line 148
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "Cannot convert '{}'(language: JavaScript, type: Object) to Java type 'int'"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         3: .line 149
            return
        end local 1 // org.graalvm.polyglot.PolyglotException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1     e  Lorg/graalvm/polyglot/PolyglotException;

  private static void lambda$11(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 150
            aload 0
            ldc "js"
            ldc "hostobj.foo({});"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$12(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 151
            aload 0
            ldc "js"
            ldc "var foo = hostobj.foo;\nfoo({});"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
         1: .line 153
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$13(java.lang.String, org.graalvm.polyglot.PolyglotException);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // org.graalvm.polyglot.PolyglotException e
         0: .line 161
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 0
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 162
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "bounce"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         2: .line 163
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "Cannot convert 'abc'(language: Java, type: java.lang.String) to Java type 'java.util.Map[]'"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         3: .line 164
            return
        end local 1 // org.graalvm.polyglot.PolyglotException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     1     e  Lorg/graalvm/polyglot/PolyglotException;

  private static void lambda$14(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 165
            aload 0
            ldc "js"
            ldc "hostobj.bounce('abc')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$15(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 166
            aload 0
            ldc "js"
            ldc "hostobj['bounce']('abc')"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$16(java.lang.String, org.graalvm.polyglot.PolyglotException);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/PolyglotException;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=2, args_size=2
        start local 1 // org.graalvm.polyglot.PolyglotException e
         0: .line 169
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 0
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         1: .line 170
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            ldc "write"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         2: .line 171
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            aload 1 /* e */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
         3: .line 172
            ldc "Cannot convert '6'(language: Java, type: java.lang.Integer) to Java type 'java.lang.String'"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
         4: .line 171
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/String;Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
         5: .line 173
            return
        end local 1 // org.graalvm.polyglot.PolyglotException e
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     1     e  Lorg/graalvm/polyglot/PolyglotException;

  private static void lambda$17(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 174
            aload 0
            ldc "js"
            ldc "hostobj.write(6, 'eight', null)"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$18(org.graalvm.polyglot.Context);
    descriptor: (Lorg/graalvm/polyglot/Context;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 175
            aload 0
            ldc "js"
            ldc "hostobj['write'](6, 'eight', null)"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "JavaScriptHostInteropTest.java"
NestMembers:
  com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$Hello  com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostIntf  com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj
InnerClasses:
  public Hello = com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$Hello of com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
  public abstract MyHostIntf = com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostIntf of com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
  public MyHostObj = com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest$MyHostObj of com.oracle.truffle.js.test.interop.JavaScriptHostInteropTest
  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