public class com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 75
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;

  public void byDefaultOnlyAnnotatedMethodsCanBeAccessed();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 78
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.create:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context;
            astore 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 79
            aload 1 /* context */
            ldc "sl"
            ldc "function readValue(x) {\n  return x.value;\n}\nfunction main() {\n  return readValue;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 80
            ldc 42
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         3: .line 81
            ldc "PublicValue isn't enough by default"
            aload 2 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         4: .line 82
            return
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    5     1    context  Lorg/graalvm/polyglot/Context;
            2    5     2  readValue  Lorg/graalvm/polyglot/Value;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void assertPropertyUndefined(java.lang.String, org.graalvm.polyglot.Value, java.lang.Object);
    descriptor: (Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // java.lang.String msg
        start local 1 // org.graalvm.polyglot.Value readValue
        start local 2 // java.lang.Object value
         0: .line 85
            aload 0 /* msg */
            ldc "value"
            aload 1 /* readValue */
            aload 2 /* value */
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         1: .line 86
            return
        end local 2 // java.lang.Object value
        end local 1 // org.graalvm.polyglot.Value readValue
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0        msg  Ljava/lang/String;
            0    2     1  readValue  Lorg/graalvm/polyglot/Value;
            0    2     2      value  Ljava/lang/Object;
    MethodParameters:
           Name  Flags
      msg        
      readValue  
      value      

  static void assertPropertyUndefined(java.lang.String, java.lang.String, org.graalvm.polyglot.Value, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // java.lang.String msg
        start local 1 // java.lang.String propName
        start local 2 // org.graalvm.polyglot.Value readValue
        start local 3 // java.lang.Object value
         0: .line 90
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* value */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            pop
         1: .line 91
            aload 0 /* msg */
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
         2: .line 92
            goto 5
      StackMap locals:
      StackMap stack: org.graalvm.polyglot.PolyglotException
         3: astore 4 /* ex */
        start local 4 // org.graalvm.polyglot.PolyglotException ex
         4: .line 93
            new java.lang.StringBuilder
            dup
            ldc "Undefined property: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* propName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 4 /* ex */
            invokevirtual org.graalvm.polyglot.PolyglotException.getMessage:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 4 // org.graalvm.polyglot.PolyglotException ex
         5: .line 95
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.lang.Object value
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // java.lang.String propName
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0        msg  Ljava/lang/String;
            0    6     1   propName  Ljava/lang/String;
            0    6     2  readValue  Lorg/graalvm/polyglot/Value;
            0    6     3      value  Ljava/lang/Object;
            4    5     4         ex  Lorg/graalvm/polyglot/PolyglotException;
      Exception table:
        from    to  target  type
           0     2       3  Class org.graalvm.polyglot.PolyglotException
    MethodParameters:
           Name  Flags
      msg        
      propName   
      readValue  
      value      

  public void exportingAllPublicIsEasy();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 107
            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 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 108
            aload 1 /* context */
            ldc "sl"
            ldc "function readValue(x) {\n  return x.value;\n}\nfunction main() {\n  return readValue;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 109
            ldc 42
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         3: .line 110
            ldc 42
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 111
            return
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    5     1    context  Lorg/graalvm/polyglot/Context;
            2    5     2  readValue  Lorg/graalvm/polyglot/Value;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void customExportedAnnotation();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 115
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$AccessMe;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* accessMeConfig */
        start local 1 // org.graalvm.polyglot.HostAccess accessMeConfig
         1: .line 116
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* accessMeConfig */
            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 2 /* context */
        start local 2 // org.graalvm.polyglot.Context context
         2: .line 117
            aload 2 /* context */
            ldc "sl"
            ldc "function readValue(x) {\n  return x.value;\n}\nfunction main() {\n  return readValue;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 3 /* readValue */
        start local 3 // org.graalvm.polyglot.Value readValue
         3: .line 118
            ldc 42
            aload 3 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 119
            ldc "Default annotation isn't enough"
            aload 3 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         5: .line 120
            ldc "Public isn't enough by default"
            aload 3 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         6: .line 121
            return
        end local 3 // org.graalvm.polyglot.Value readValue
        end local 2 // org.graalvm.polyglot.Context context
        end local 1 // org.graalvm.polyglot.HostAccess accessMeConfig
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    7     1  accessMeConfig  Lorg/graalvm/polyglot/HostAccess;
            2    7     2         context  Lorg/graalvm/polyglot/Context;
            3    7     3       readValue  Lorg/graalvm/polyglot/Value;
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void explicitlyEnumeratingField();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 134
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$AccessibleValue;
            ldc "value"
            invokevirtual java.lang.Class.getField:(Ljava/lang/String;)Ljava/lang/reflect/Field;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccess:(Ljava/lang/reflect/Field;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* explictConfig */
        start local 1 // org.graalvm.polyglot.HostAccess explictConfig
         1: .line 135
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* explictConfig */
            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 2 /* context */
        start local 2 // org.graalvm.polyglot.Context context
         2: .line 136
            aload 2 /* context */
            ldc "sl"
            ldc "function readValue(x) {\n  return x.value;\n}\nfunction main() {\n  return readValue;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 3 /* readValue */
        start local 3 // org.graalvm.polyglot.Value readValue
         3: .line 137
            ldc 42
            aload 3 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         4: .line 138
            ldc "Default annotation isn't enough"
            aload 3 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         5: .line 139
            ldc "Public isn't enough by default"
            aload 3 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         6: .line 140
            return
        end local 3 // org.graalvm.polyglot.Value readValue
        end local 2 // org.graalvm.polyglot.Context context
        end local 1 // org.graalvm.polyglot.HostAccess explictConfig
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    7     0           this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    7     1  explictConfig  Lorg/graalvm/polyglot/HostAccess;
            2    7     2        context  Lorg/graalvm/polyglot/Context;
            3    7     3      readValue  Lorg/graalvm/polyglot/Value;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void fooBarExposedByInheritance();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 185
            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.EXPLICIT: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 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 186
            aload 1 /* context */
            ldc "sl"
            ldc "function callFoo(x) {\n  return x.foo(1);\n}\nfunction main() {\n  return callFoo;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 187
            ldc "basic foo"
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Foo
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Foo.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 188
            ldc "enhanced bar"
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Bar
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Bar.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 189
            ldc "Cannot call public method in package private class"
            ldc "foo"
            aload 2 /* readValue */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PackagePrivateBar
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PackagePrivateBar.<init>:()V
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertPropertyUndefined:(Ljava/lang/String;Ljava/lang/String;Lorg/graalvm/polyglot/Value;Ljava/lang/Object;)V
         5: .line 190
            ldc "basic foo"
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateFoo
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateFoo.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         6: .line 191
            ldc "overriden foo"
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateChangedFoo
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateChangedFoo.<init>:()V
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 192
            return
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    8     1    context  Lorg/graalvm/polyglot/Context;
            2    8     2  readValue  Lorg/graalvm/polyglot/Value;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void functionalInterfaceCall();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 202
            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.EXPLICIT: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 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 203
            aload 1 /* context */
            ldc "sl"
            ldc "function callFoo(x) {\n  return x.foo(1);\n}\nfunction main() {\n  return callFoo;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 204
            invokedynamic foo()Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
              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/Number;)Ljava/lang/Object;
                  com/oracle/truffle/api/test/polyglot/ExposeToGuestTest.lambda$0(Ljava/lang/Number;)Ljava/lang/Object; (6)
                  (Ljava/lang/Number;)Ljava/lang/Object;
            astore 3 /* foo */
        start local 3 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
         3: .line 205
            ldc "functional foo"
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* foo */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 206
            return
        end local 3 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1    5     1    context  Lorg/graalvm/polyglot/Context;
            2    5     2  readValue  Lorg/graalvm/polyglot/Value;
            3    5     3        foo  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void listAccessAllowedInPublicHostAccess();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 210
            iconst_1
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessAllowedInPublicHostAccess:(Z)V
         1: .line 211
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void arrayAccessAllowedInPublicHostAccess();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 215
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessAllowedInPublicHostAccess:(Z)V
         1: .line 216
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void doAccessAllowedInPublicHostAccess(boolean);
    descriptor: (Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // boolean asList
         0: .line 219
            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 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 220
            aload 1 /* context */
            ldc "sl"
            ldc "function callFoo(x) {\n  return x.foo(1)[0];\n}\nfunction main() {\n  return callFoo;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 221
            iconst_1
            newarray 4
            astore 3 /* gotIn */
        start local 3 // boolean[] gotIn
         3: .line 222
            aload 3 /* gotIn */
            iload 0 /* asList */
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.returnAsArrayOrList:([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
            astore 4 /* foo */
        start local 4 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
         4: .line 223
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* foo */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* arrayRead */
        start local 5 // org.graalvm.polyglot.Value arrayRead
         5: .line 224
            ldc "Foo lamda called"
            aload 3 /* gotIn */
            iconst_0
            baload
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         6: .line 225
            lconst_1
            aload 5 /* arrayRead */
            invokevirtual org.graalvm.polyglot.Value.asInt:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
         7: .line 226
            return
        end local 5 // org.graalvm.polyglot.Value arrayRead
        end local 4 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
        end local 3 // boolean[] gotIn
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // boolean asList
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0     asList  Z
            1    8     1    context  Lorg/graalvm/polyglot/Context;
            2    8     2  readValue  Lorg/graalvm/polyglot/Value;
            3    8     3      gotIn  [Z
            4    8     4        foo  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
            5    8     5  arrayRead  Lorg/graalvm/polyglot/Value;
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      asList  

  public void listAccessForbiddenInExplicit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 230
            iconst_1
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessForbiddenInExplicit:(Z)V
         1: .line 231
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void arrayAccessForbiddenInExplicit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 235
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessForbiddenInExplicit:(Z)V
         1: .line 236
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void doAccessForbiddenInExplicit(boolean);
    descriptor: (Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // boolean asList
         0: .line 239
            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.EXPLICIT: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 1 /* context */
        start local 1 // org.graalvm.polyglot.Context context
         1: .line 240
            aload 1 /* context */
            ldc "sl"
            ldc "function callFoo(x) {\n  return x.foo(1)[0];\n}\nfunction main() {\n  return callFoo;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 2 /* readValue */
        start local 2 // org.graalvm.polyglot.Value readValue
         2: .line 241
            iconst_1
            newarray 4
            astore 3 /* gotIn */
        start local 3 // boolean[] gotIn
         3: .line 242
            aload 3 /* gotIn */
            iload 0 /* asList */
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.returnAsArrayOrList:([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
            astore 4 /* foo */
        start local 4 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
         4: .line 245
            aload 2 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* foo */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* arrayRead */
        start local 5 // org.graalvm.polyglot.Value arrayRead
         5: .line 246
            goto 10
        end local 5 // org.graalvm.polyglot.Value arrayRead
      StackMap locals: int org.graalvm.polyglot.Context org.graalvm.polyglot.Value boolean[] com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface
      StackMap stack: java.lang.Exception
         6: astore 6 /* ex */
        start local 6 // java.lang.Exception ex
         7: .line 247
            ldc "Expecting an exception"
            ldc Lorg/graalvm/polyglot/PolyglotException;
            aload 6 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 248
            ldc "Foo lamda called"
            aload 3 /* gotIn */
            iconst_0
            baload
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
         9: .line 249
            return
        end local 6 // java.lang.Exception ex
        start local 5 // org.graalvm.polyglot.Value arrayRead
        10: .line 251
      StackMap locals: org.graalvm.polyglot.Value
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "The read shouldn't succeed: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 5 /* arrayRead */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        11: .line 252
            return
        end local 5 // org.graalvm.polyglot.Value arrayRead
        end local 4 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
        end local 3 // boolean[] gotIn
        end local 2 // org.graalvm.polyglot.Value readValue
        end local 1 // org.graalvm.polyglot.Context context
        end local 0 // boolean asList
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   12     0     asList  Z
            1   12     1    context  Lorg/graalvm/polyglot/Context;
            2   12     2  readValue  Lorg/graalvm/polyglot/Value;
            3   12     3      gotIn  [Z
            4   12     4        foo  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
            5    6     5  arrayRead  Lorg/graalvm/polyglot/Value;
           10   12     5  arrayRead  Lorg/graalvm/polyglot/Value;
            7   10     6         ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.Exception
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      asList  

  public void listAccessForbiddenInManual();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 256
            iconst_1
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessForbiddenInManual:(Z)V
         1: .line 257
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void arrayAccessForbiddenInManual();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 261
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.doAccessForbiddenInManual:(Z)V
         1: .line 262
            return
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void doAccessForbiddenInManual(boolean);
    descriptor: (Z)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=8, args_size=1
        start local 0 // boolean asList
         0: .line 265
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
            ldc "foo"
            iconst_1
            anewarray java.lang.Class
            dup
            iconst_0
            ldc Ljava/lang/Number;
            aastore
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccess:(Ljava/lang/reflect/Executable;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* config */
        start local 1 // org.graalvm.polyglot.HostAccess config
         1: .line 266
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* config */
            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 2 /* context */
        start local 2 // org.graalvm.polyglot.Context context
         2: .line 267
            aload 2 /* context */
            ldc "sl"
            ldc "function callFoo(x) {\n  return x.foo(1)[0];\n}\nfunction main() {\n  return callFoo;\n}\n"
            invokevirtual org.graalvm.polyglot.Context.eval:(Ljava/lang/String;Ljava/lang/CharSequence;)Lorg/graalvm/polyglot/Value;
            astore 3 /* readValue */
        start local 3 // org.graalvm.polyglot.Value readValue
         3: .line 268
            iconst_1
            newarray 4
            astore 4 /* gotIn */
        start local 4 // boolean[] gotIn
         4: .line 269
            aload 4 /* gotIn */
            iload 0 /* asList */
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.returnAsArrayOrList:([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
            astore 5 /* foo */
        start local 5 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
         5: .line 272
            aload 3 /* readValue */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* foo */
            aastore
            invokevirtual org.graalvm.polyglot.Value.execute:([Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 6 /* arrayRead */
        start local 6 // org.graalvm.polyglot.Value arrayRead
         6: .line 273
            goto 11
        end local 6 // org.graalvm.polyglot.Value arrayRead
      StackMap locals: int org.graalvm.polyglot.HostAccess org.graalvm.polyglot.Context org.graalvm.polyglot.Value boolean[] com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface
      StackMap stack: java.lang.Exception
         7: astore 7 /* ex */
        start local 7 // java.lang.Exception ex
         8: .line 274
            ldc "Expecting an exception"
            ldc Lorg/graalvm/polyglot/PolyglotException;
            aload 7 /* ex */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 275
            ldc "Foo lamda called"
            aload 4 /* gotIn */
            iconst_0
            baload
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        10: .line 276
            return
        end local 7 // java.lang.Exception ex
        start local 6 // org.graalvm.polyglot.Value arrayRead
        11: .line 278
      StackMap locals: org.graalvm.polyglot.Value
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "The read shouldn't succeed: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* arrayRead */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic org.junit.Assert.fail:(Ljava/lang/String;)V
        12: .line 279
            return
        end local 6 // org.graalvm.polyglot.Value arrayRead
        end local 5 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
        end local 4 // boolean[] gotIn
        end local 3 // org.graalvm.polyglot.Value readValue
        end local 2 // org.graalvm.polyglot.Context context
        end local 1 // org.graalvm.polyglot.HostAccess config
        end local 0 // boolean asList
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0     asList  Z
            1   13     1     config  Lorg/graalvm/polyglot/HostAccess;
            2   13     2    context  Lorg/graalvm/polyglot/Context;
            3   13     3  readValue  Lorg/graalvm/polyglot/Value;
            4   13     4      gotIn  [Z
            5   13     5        foo  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
            6    7     6  arrayRead  Lorg/graalvm/polyglot/Value;
           11   13     6  arrayRead  Lorg/graalvm/polyglot/Value;
            8   11     7         ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           5     6       7  Class java.lang.Exception
    Exceptions:
      throws java.lang.Exception
    MethodParameters:
        Name  Flags
      asList  

  private static com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface<java.lang.Number> returnAsArrayOrList(boolean[], boolean);
    descriptor: ([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // boolean[] gotIn
        start local 1 // boolean asList
         0: .line 282
            aload 0 /* gotIn */
            iload 1 /* asList */
            invokedynamic foo([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface;
              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/Number;)Ljava/lang/Object;
                  com/oracle/truffle/api/test/polyglot/ExposeToGuestTest.lambda$1([ZZLjava/lang/Number;)Ljava/lang/Object; (6)
                  (Ljava/lang/Number;)Ljava/lang/Object;
            astore 2 /* foo */
        start local 2 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
         1: .line 290
            aload 2 /* foo */
            areturn
        end local 2 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface foo
        end local 1 // boolean asList
        end local 0 // boolean[] gotIn
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0   gotIn  [Z
            0    2     1  asList  Z
            1    2     2     foo  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
    Signature: ([ZZ)Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FooInterface<Ljava/lang/Number;>;
    MethodParameters:
        Name  Flags
      gotIn   
      asList  

  public void staticFieldAccessIsForbidden();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 304
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            astore 1 /* builder */
        start local 1 // org.graalvm.polyglot.Context$Builder builder
         1: .line 305
            aload 1 /* 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/api/test/polyglot/ExposeToGuestTest.lambda$2(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;
            pop
         2: .line 306
            aload 1 /* builder */
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 2 /* c */
        start local 2 // org.graalvm.polyglot.Context c
         3: .line 307
            aload 2 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 308
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         5: .line 310
            invokestatic com.oracle.truffle.api.test.polyglot.ProxyLanguage.getCurrentContext:()Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage$LanguageContext;
            invokevirtual com.oracle.truffle.api.test.polyglot.ProxyLanguage$LanguageContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$FieldAccess;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookupHostSymbol:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* hostLookup */
        start local 3 // java.lang.Object hostLookup
         6: .line 311
            aload 3 /* hostLookup */
            ldc "staticField"
            iconst_0
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertMember:(Ljava/lang/Object;Ljava/lang/String;ZZ)V
         7: .line 312
            aload 3 /* hostLookup */
            ldc "finalField"
            iconst_0
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertMember:(Ljava/lang/Object;Ljava/lang/String;ZZ)V
         8: .line 313
            aload 3 /* hostLookup */
            ldc "exportedStaticField"
            iconst_1
            iconst_1
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertMember:(Ljava/lang/Object;Ljava/lang/String;ZZ)V
         9: .line 314
            aload 3 /* hostLookup */
            ldc "exportedField"
            iconst_1
            iconst_0
            invokestatic com.oracle.truffle.api.test.polyglot.ExposeToGuestTest.assertMember:(Ljava/lang/Object;Ljava/lang/String;ZZ)V
        end local 3 // java.lang.Object hostLookup
        10: .line 315
            goto 15
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.Context$Builder org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        11: astore 4
        12: .line 316
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        13: .line 317
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        14: .line 318
            aload 4
            athrow
        15: .line 316
      StackMap locals:
      StackMap stack:
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        16: .line 317
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        17: .line 320
            return
        end local 2 // org.graalvm.polyglot.Context c
        end local 1 // org.graalvm.polyglot.Context$Builder builder
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   18     0        this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   18     1     builder  Lorg/graalvm/polyglot/Context$Builder;
            3   18     2           c  Lorg/graalvm/polyglot/Context;
            6   10     3  hostLookup  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           5    11      11  any
    Exceptions:
      throws com.oracle.truffle.api.interop.InteropException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static void assertMember(java.lang.Object, java.lang.String, boolean, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/String;ZZ)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=4
        start local 0 // java.lang.Object object
        start local 1 // java.lang.String member
        start local 2 // boolean readable
        start local 3 // boolean modifiable
         0: .line 323
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            astore 4 /* interop */
        start local 4 // com.oracle.truffle.api.interop.InteropLibrary interop
         1: .line 324
            aload 4 /* interop */
            aload 0 /* object */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.hasMembers:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         2: .line 325
            iload 2 /* readable */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberReadable:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 326
            iload 3 /* modifiable */
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberModifiable:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 327
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberInsertable:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         5: .line 328
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isMemberRemovable:(Ljava/lang/Object;Ljava/lang/String;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
         6: .line 330
            iload 2 /* readable */
            ifeq 9
         7: .line 331
            ldc "42"
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 332
            goto 13
         9: .line 334
      StackMap locals: com.oracle.truffle.api.interop.InteropLibrary
      StackMap stack:
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.readMember:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
        10: .line 335
            invokestatic org.junit.Assert.fail:()V
        11: .line 336
            goto 13
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnknownIdentifierException
        12: pop
        13: .line 339
      StackMap locals:
      StackMap stack:
            iload 3 /* modifiable */
            ifeq 16
        14: .line 340
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            ldc "42"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        15: .line 341
            goto 20
        16: .line 343
      StackMap locals:
      StackMap stack:
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            ldc "43"
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.writeMember:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;)V
        17: .line 344
            invokestatic org.junit.Assert.fail:()V
        18: .line 345
            goto 20
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnknownIdentifierException
        19: pop
        20: .line 349
      StackMap locals:
      StackMap stack:
            aload 4 /* interop */
            aload 0 /* object */
            aload 1 /* member */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.removeMember:(Ljava/lang/Object;Ljava/lang/String;)V
        21: .line 350
            invokestatic org.junit.Assert.fail:()V
        22: .line 351
            goto 24
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
        23: pop
        24: .line 353
      StackMap locals:
      StackMap stack:
            return
        end local 4 // com.oracle.truffle.api.interop.InteropLibrary interop
        end local 3 // boolean modifiable
        end local 2 // boolean readable
        end local 1 // java.lang.String member
        end local 0 // java.lang.Object object
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   25     0      object  Ljava/lang/Object;
            0   25     1      member  Ljava/lang/String;
            0   25     2    readable  Z
            0   25     3  modifiable  Z
            1   25     4     interop  Lcom/oracle/truffle/api/interop/InteropLibrary;
      Exception table:
        from    to  target  type
           9    11      12  Class com.oracle.truffle.api.interop.UnknownIdentifierException
          16    18      19  Class com.oracle.truffle.api.interop.UnknownIdentifierException
          20    22      23  Class com.oracle.truffle.api.interop.UnsupportedMessageException
    Exceptions:
      throws com.oracle.truffle.api.interop.InteropException
    MethodParameters:
            Name  Flags
      object      
      member      
      readable    
      modifiable  

  public void staticConstructorAccessIsForbidden();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 379
            iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            astore 1 /* builder */
        start local 1 // org.graalvm.polyglot.Context$Builder builder
         1: .line 380
            aload 1 /* 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/api/test/polyglot/ExposeToGuestTest.lambda$3(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;
            pop
         2: .line 381
            aload 1 /* builder */
            invokevirtual org.graalvm.polyglot.Context$Builder.build:()Lorg/graalvm/polyglot/Context;
            astore 2 /* c */
        start local 2 // org.graalvm.polyglot.Context c
         3: .line 382
            aload 2 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 383
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.enter:()V
         5: .line 385
            invokestatic com.oracle.truffle.api.test.polyglot.ProxyLanguage.getCurrentContext:()Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage$LanguageContext;
            invokevirtual com.oracle.truffle.api.test.polyglot.ProxyLanguage$LanguageContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$AllowedConstructorAccess;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookupHostSymbol:(Ljava/lang/String;)Ljava/lang/Object;
            astore 3 /* allowed */
        start local 3 // java.lang.Object allowed
         6: .line 386
            invokestatic com.oracle.truffle.api.interop.InteropLibrary.getFactory:()Lcom/oracle/truffle/api/library/LibraryFactory;
            invokevirtual com.oracle.truffle.api.library.LibraryFactory.getUncached:()Lcom/oracle/truffle/api/library/Library;
            checkcast com.oracle.truffle.api.interop.InteropLibrary
            astore 4 /* library */
        start local 4 // com.oracle.truffle.api.interop.InteropLibrary library
         7: .line 387
            aload 4 /* library */
            aload 3 /* allowed */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isInstantiable:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertTrue:(Z)V
         8: .line 389
            aload 4 /* library */
            aload 3 /* allowed */
            iconst_0
            anewarray java.lang.Object
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.instantiate:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
         9: .line 390
            invokestatic org.junit.Assert.fail:()V
        10: .line 391
            goto 12
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.Context$Builder org.graalvm.polyglot.Context java.lang.Object com.oracle.truffle.api.interop.InteropLibrary
      StackMap stack: com.oracle.truffle.api.interop.ArityException
        11: pop
        12: .line 394
      StackMap locals:
      StackMap stack:
            aload 4 /* library */
            aload 3 /* allowed */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.instantiate:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 395
            invokestatic org.junit.Assert.fail:()V
        14: .line 396
            goto 16
      StackMap locals:
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedTypeException
        15: pop
        16: .line 398
      StackMap locals:
      StackMap stack:
            aload 4 /* library */
            aload 3 /* allowed */
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "asdf"
            aastore
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.instantiate:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
        17: .line 400
            invokestatic com.oracle.truffle.api.test.polyglot.ProxyLanguage.getCurrentContext:()Lcom/oracle/truffle/api/test/polyglot/ProxyLanguage$LanguageContext;
            invokevirtual com.oracle.truffle.api.test.polyglot.ProxyLanguage$LanguageContext.getEnv:()Lcom/oracle/truffle/api/TruffleLanguage$Env;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$DeniedConstructorAccess;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual com.oracle.truffle.api.TruffleLanguage$Env.lookupHostSymbol:(Ljava/lang/String;)Ljava/lang/Object;
            astore 5 /* denied */
        start local 5 // java.lang.Object denied
        18: .line 401
            aload 4 /* library */
            aload 5 /* denied */
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.isInstantiable:(Ljava/lang/Object;)Z
            invokestatic org.junit.Assert.assertFalse:(Z)V
        19: .line 403
            aload 4 /* library */
            aload 5 /* denied */
            iconst_0
            anewarray java.lang.Object
            invokevirtual com.oracle.truffle.api.interop.InteropLibrary.instantiate:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            pop
        20: .line 404
            invokestatic org.junit.Assert.fail:()V
        21: .line 405
            goto 28
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.Context$Builder org.graalvm.polyglot.Context java.lang.Object com.oracle.truffle.api.interop.InteropLibrary java.lang.Object
      StackMap stack: com.oracle.truffle.api.interop.UnsupportedMessageException
        22: pop
        end local 5 // java.lang.Object denied
        end local 4 // com.oracle.truffle.api.interop.InteropLibrary library
        end local 3 // java.lang.Object allowed
        23: .line 407
            goto 28
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.Context$Builder org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        24: astore 6
        25: .line 408
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        26: .line 409
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        27: .line 410
            aload 6
            athrow
        28: .line 408
      StackMap locals:
      StackMap stack:
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.leave:()V
        29: .line 409
            aload 2 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        30: .line 411
            return
        end local 2 // org.graalvm.polyglot.Context c
        end local 1 // org.graalvm.polyglot.Context$Builder builder
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   31     0     this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   31     1  builder  Lorg/graalvm/polyglot/Context$Builder;
            3   31     2        c  Lorg/graalvm/polyglot/Context;
            6   23     3  allowed  Ljava/lang/Object;
            7   23     4  library  Lcom/oracle/truffle/api/interop/InteropLibrary;
           18   23     5   denied  Ljava/lang/Object;
      Exception table:
        from    to  target  type
           8    10      11  Class com.oracle.truffle.api.interop.ArityException
          12    14      15  Class com.oracle.truffle.api.interop.UnsupportedTypeException
          19    21      22  Class com.oracle.truffle.api.interop.UnsupportedMessageException
           5    24      24  any
    Exceptions:
      throws com.oracle.truffle.api.interop.InteropException
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyOverloads();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 495
            getstatic org.graalvm.polyglot.HostAccess.EXPLICIT:Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 496
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 497
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 498
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 499
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 6 /* arg */
        start local 6 // org.graalvm.polyglot.Value arg
         6: .line 501
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* arg */
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            pop
         7: .line 502
            invokestatic org.junit.Assert.fail:()V
         8: .line 503
            goto 11
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value
      StackMap stack: java.lang.IllegalArgumentException
         9: astore 7 /* e */
        start local 7 // java.lang.IllegalArgumentException e
        10: .line 505
            aload 7 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            aload 7 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            ldc "Multiple applicable overloads"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 7 // java.lang.IllegalArgumentException e
        11: .line 507
      StackMap locals:
      StackMap stack:
            ldc "42"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "42"
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value arg
        end local 5 // org.graalvm.polyglot.Value v
        12: .line 508
            aload 4 /* c */
            ifnull 18
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 18
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 4 /* c */
            ifnull 14
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        14: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 3
            aload 2
            ifnonnull 16
            aload 3
            astore 2
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 2
            aload 3
            if_acmpeq 17
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 2
            athrow
        18: .line 511
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        19: .line 512
            aconst_null
            astore 2
            aconst_null
            astore 3
        20: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
        21: .line 513
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
        22: .line 514
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
        23: .line 515
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 6 /* arg */
        start local 6 // org.graalvm.polyglot.Value arg
        24: .line 517
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* arg */
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            pop
        25: .line 518
            invokestatic org.junit.Assert.fail:()V
        26: .line 519
            goto 29
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value
      StackMap stack: java.lang.IllegalArgumentException
        27: astore 7 /* e */
        start local 7 // java.lang.IllegalArgumentException e
        28: .line 521
            aload 7 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            aload 7 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            ldc "no applicable overload found"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            invokestatic org.junit.Assert.assertTrue:(Ljava/lang/String;Z)V
        end local 7 // java.lang.IllegalArgumentException e
        29: .line 523
      StackMap locals:
      StackMap stack:
            ldc "42"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "42"
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value arg
        end local 5 // org.graalvm.polyglot.Value v
        30: .line 524
            aload 4 /* c */
            ifnull 36
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 36
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        31: astore 2
            aload 4 /* c */
            ifnull 32
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      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 527
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Ljava/lang/FunctionalInterface;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementationsAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        37: .line 528
            aconst_null
            astore 2
            aconst_null
            astore 3
        38: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
        39: .line 529
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
        40: .line 530
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
        41: .line 531
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 6 /* arg */
        start local 6 // org.graalvm.polyglot.Value arg
        42: .line 532
            ldc "MarkedFunctional"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* arg */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        43: .line 533
            ldc "42"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "42"
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value arg
        end local 5 // org.graalvm.polyglot.Value v
        44: .line 534
            aload 4 /* c */
            ifnull 50
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 50
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        45: astore 2
            aload 4 /* c */
            ifnull 46
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        46: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        47: astore 3
            aload 2
            ifnonnull 48
            aload 3
            astore 2
            goto 49
      StackMap locals:
      StackMap stack:
        48: aload 2
            aload 3
            if_acmpeq 49
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        49: aload 2
            athrow
        50: .line 537
      StackMap locals:
      StackMap stack:
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementations:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        51: .line 538
            aconst_null
            astore 2
            aconst_null
            astore 3
        52: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
        53: .line 539
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
        54: .line 540
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
        55: .line 541
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 6 /* arg */
        start local 6 // org.graalvm.polyglot.Value arg
        56: .line 542
            ldc "MarkedInterface"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* arg */
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        57: .line 543
            ldc "42"
            aload 5 /* v */
            ldc "overloaded"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            ldc "42"
            aastore
            invokevirtual org.graalvm.polyglot.Value.invokeMember:(Ljava/lang/String;[Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            invokevirtual org.graalvm.polyglot.Value.asString:()Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value arg
        end local 5 // org.graalvm.polyglot.Value v
        58: .line 544
            aload 4 /* c */
            ifnull 64
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 64
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        59: astore 2
            aload 4 /* c */
            ifnull 60
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        60: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        61: astore 3
            aload 2
            ifnonnull 62
            aload 3
            astore 2
            goto 63
      StackMap locals:
      StackMap stack:
        62: aload 2
            aload 3
            if_acmpeq 63
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        63: aload 2
            athrow
        64: .line 545
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   65     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   65     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   14     4       c  Lorg/graalvm/polyglot/Context;
            5   12     5       v  Lorg/graalvm/polyglot/Value;
            6   12     6     arg  Lorg/graalvm/polyglot/Value;
           10   11     7       e  Ljava/lang/IllegalArgumentException;
           21   32     4       c  Lorg/graalvm/polyglot/Context;
           23   30     5       v  Lorg/graalvm/polyglot/Value;
           24   30     6     arg  Lorg/graalvm/polyglot/Value;
           28   29     7       e  Ljava/lang/IllegalArgumentException;
           39   46     4       c  Lorg/graalvm/polyglot/Context;
           41   44     5       v  Lorg/graalvm/polyglot/Value;
           42   44     6     arg  Lorg/graalvm/polyglot/Value;
           53   60     4       c  Lorg/graalvm/polyglot/Context;
           55   58     5       v  Lorg/graalvm/polyglot/Value;
           56   58     6     arg  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           6     8       9  Class java.lang.IllegalArgumentException
           3    12      13  any
           2    15      15  any
          24    26      27  Class java.lang.IllegalArgumentException
          21    30      31  any
          20    33      33  any
          39    44      45  any
          38    47      47  any
          53    58      59  any
          52    61      61  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyExplicit();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 550
            getstatic org.graalvm.polyglot.HostAccess.EXPLICIT:Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 551
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 552
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 553
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 554
            aload 5 /* v */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         6: .line 555
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 557
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$EmptyInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
         8: .line 558
            invokestatic org.junit.Assert.fail:()V
         9: .line 559
            goto 11
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value
      StackMap stack: java.lang.ClassCastException
        10: pop
        11: .line 562
      StackMap locals:
      StackMap stack:
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        12: .line 563
            invokestatic org.junit.Assert.fail:()V
        13: .line 564
            goto 15
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        14: pop
        15: .line 567
      StackMap locals:
      StackMap stack:
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        16: .line 569
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        17: .line 570
            invokestatic org.junit.Assert.fail:()V
        18: .line 571
            goto 20
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        19: pop
        20: .line 573
      StackMap locals:
      StackMap stack:
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            aconst_null
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        21: .line 574
            aload 4 /* c */
            ifnull 27
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 27
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        22: astore 2
            aload 4 /* c */
            ifnull 23
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        23: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 3
            aload 2
            ifnonnull 25
            aload 3
            astore 2
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 2
            aload 3
            if_acmpeq 26
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 2
            athrow
        27: .line 575
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   28     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   28     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   23     4       c  Lorg/graalvm/polyglot/Context;
            5   21     5       v  Lorg/graalvm/polyglot/Value;
            6   21     6       f  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           7     9      10  Class java.lang.ClassCastException
          11    13      14  Class java.lang.ClassCastException
          16    18      19  Class java.lang.ClassCastException
           3    21      22  any
           2    24      24  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyMarked();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 580
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
         1: .line 581
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementations:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementations:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
         2: .line 580
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         3: .line 582
            aconst_null
            astore 2
            aconst_null
            astore 3
         4: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         5: .line 583
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         6: .line 584
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         7: .line 585
            aload 5 /* v */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         8: .line 586
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 588
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$EmptyInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        10: .line 589
            invokestatic org.junit.Assert.fail:()V
        11: .line 590
            goto 13
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value
      StackMap stack: java.lang.ClassCastException
        12: pop
        13: .line 593
      StackMap locals:
      StackMap stack:
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        14: .line 594
            invokestatic org.junit.Assert.fail:()V
        15: .line 595
            goto 17
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        16: pop
        17: .line 598
      StackMap locals:
      StackMap stack:
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        18: .line 600
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        19: .line 601
            invokestatic org.junit.Assert.fail:()V
        20: .line 602
            goto 22
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        21: pop
        22: .line 604
      StackMap locals:
      StackMap stack:
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            aconst_null
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        23: .line 605
            aload 4 /* c */
            ifnull 29
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 29
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        24: astore 2
            aload 4 /* c */
            ifnull 25
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        25: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: astore 3
            aload 2
            ifnonnull 27
            aload 3
            astore 2
            goto 28
      StackMap locals:
      StackMap stack:
        27: aload 2
            aload 3
            if_acmpeq 28
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        28: aload 2
            athrow
        29: .line 606
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   30     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            3   30     1  access  Lorg/graalvm/polyglot/HostAccess;
            5   25     4       c  Lorg/graalvm/polyglot/Context;
            7   23     5       v  Lorg/graalvm/polyglot/Value;
            8   23     6       f  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           9    11      12  Class java.lang.ClassCastException
          13    15      16  Class java.lang.ClassCastException
          18    20      21  Class java.lang.ClassCastException
           5    23      24  any
           4    26      26  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyNone();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 611
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 612
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 613
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 614
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 615
            aload 5 /* v */
            ldc "exported"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         6: .line 617
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
         7: .line 618
            invokestatic org.junit.Assert.fail:()V
         8: .line 619
            goto 10
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value org.graalvm.polyglot.Value
      StackMap stack: java.lang.ClassCastException
         9: pop
        10: .line 622
      StackMap locals:
      StackMap stack:
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$EmptyInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        11: .line 623
            invokestatic org.junit.Assert.fail:()V
        12: .line 624
            goto 14
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        13: pop
        14: .line 627
      StackMap locals:
      StackMap stack:
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        15: .line 628
            invokestatic org.junit.Assert.fail:()V
        16: .line 629
            goto 18
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        17: pop
        18: .line 632
      StackMap locals:
      StackMap stack:
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        19: .line 633
            invokestatic org.junit.Assert.fail:()V
        20: .line 634
            goto 22
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        21: pop
        22: .line 637
      StackMap locals:
      StackMap stack:
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
        23: .line 638
            invokestatic org.junit.Assert.fail:()V
        24: .line 639
            goto 26
      StackMap locals:
      StackMap stack: java.lang.ClassCastException
        25: pop
        26: .line 641
      StackMap locals:
      StackMap stack:
            ldc "42"
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            ldc "42"
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        27: .line 642
            aload 4 /* c */
            ifnull 33
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 33
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        28: astore 2
            aload 4 /* c */
            ifnull 29
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        29: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        30: astore 3
            aload 2
            ifnonnull 31
            aload 3
            astore 2
            goto 32
      StackMap locals:
      StackMap stack:
        31: aload 2
            aload 3
            if_acmpeq 32
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        32: aload 2
            athrow
        33: .line 643
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   34     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   34     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   29     4       c  Lorg/graalvm/polyglot/Context;
            5   27     5       v  Lorg/graalvm/polyglot/Value;
            6   27     6       f  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           6     8       9  Class java.lang.ClassCastException
          10    12      13  Class java.lang.ClassCastException
          14    16      17  Class java.lang.ClassCastException
          18    20      21  Class java.lang.ClassCastException
          22    24      25  Class java.lang.ClassCastException
           3    27      28  any
           2    30      30  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyManualAll();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 648
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            iconst_1
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAllImplementations:(Z)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 649
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 650
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 651
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 652
            aload 5 /* v */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         6: .line 653
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 654
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 655
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$EmptyInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         9: .line 657
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 658
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        11: .line 659
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            aconst_null
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        12: .line 660
            aload 4 /* c */
            ifnull 18
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 18
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 4 /* c */
            ifnull 14
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        14: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 3
            aload 2
            ifnonnull 16
            aload 3
            astore 2
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 2
            aload 3
            if_acmpeq 17
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 2
            athrow
        18: .line 661
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   19     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   14     4       c  Lorg/graalvm/polyglot/Context;
            5   12     5       v  Lorg/graalvm/polyglot/Value;
            6   12     6       f  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           3    12      13  any
           2    15      15  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testProxyAll();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 666
            getstatic org.graalvm.polyglot.HostAccess.ALL:Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 667
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 668
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 669
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 670
            aload 5 /* v */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         6: .line 671
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         7: .line 672
            ldc "42"
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface
            ldc "42"
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface.exported:(Ljava/lang/String;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 673
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$EmptyInterface;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/Object;)V
         9: .line 675
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        10: .line 676
            ldc 42
            aload 6 /* f */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$UnmarkedFunctional;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional
            invokeinterface com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional.f:()I
            i2l
            invokestatic org.junit.Assert.assertEquals:(JJ)V
        11: .line 677
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            aconst_null
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        12: .line 678
            aload 4 /* c */
            ifnull 18
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 18
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        13: astore 2
            aload 4 /* c */
            ifnull 14
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      StackMap locals:
      StackMap stack:
        14: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 3
            aload 2
            ifnonnull 16
            aload 3
            astore 2
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 2
            aload 3
            if_acmpeq 17
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 2
            athrow
        18: .line 679
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   19     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   19     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   14     4       c  Lorg/graalvm/polyglot/Context;
            5   12     5       v  Lorg/graalvm/polyglot/Value;
            6   12     6       f  Lorg/graalvm/polyglot/Value;
      Exception table:
        from    to  target  type
           3    12      13  any
           2    15      15  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAdapterClass();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 684
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedClass;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementations:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 685
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 686
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 687
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 688
            aload 5 /* v */
            ldc "noArg"
            invokevirtual org.graalvm.polyglot.Value.getMember:(Ljava/lang/String;)Lorg/graalvm/polyglot/Value;
            astore 6 /* f */
        start local 6 // org.graalvm.polyglot.Value f
         6: .line 689
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedClass;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass
            astore 7 /* markedClass */
        start local 7 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass markedClass
         7: .line 690
            ldc "42"
            aload 7 /* markedClass */
            ldc "42"
            invokevirtual com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass.exported:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
         8: .line 691
            ldc "adapter class should be cached"
            aload 7 /* markedClass */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedClass;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic org.junit.Assert.assertSame:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         9: .line 692
            bipush 42
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 6 /* f */
            ldc Ljava/util/function/Function;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            checkcast java.util.function.Function
            aconst_null
            invokeinterface java.util.function.Function.apply:(Ljava/lang/Object;)Ljava/lang/Object;
            invokestatic org.junit.Assert.assertEquals:(Ljava/lang/Object;Ljava/lang/Object;)V
        end local 7 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass markedClass
        end local 6 // org.graalvm.polyglot.Value f
        end local 5 // org.graalvm.polyglot.Value v
        10: .line 693
            aload 4 /* c */
            ifnull 16
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 4 /* c */
            ifnull 12
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      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 694
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   17     1       access  Lorg/graalvm/polyglot/HostAccess;
            3   12     4            c  Lorg/graalvm/polyglot/Context;
            5   10     5            v  Lorg/graalvm/polyglot/Value;
            6   10     6            f  Lorg/graalvm/polyglot/Value;
            7   10     7  markedClass  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedClass;
      Exception table:
        from    to  target  type
           3    10      11  any
           2    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAdapterNoDefaultConstructor();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 698
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$NoDefaultConstructor;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowImplementations:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 699
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 700
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 701
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 703
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$NoDefaultConstructor;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
         6: .line 704
            invokestatic org.junit.Assert.fail:()V
         7: .line 705
            goto 10
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value
      StackMap stack: java.lang.ClassCastException
         8: astore 6 /* e */
        start local 6 // java.lang.ClassCastException e
         9: .line 706
            aload 6 /* e */
            invokevirtual java.lang.ClassCastException.getMessage:()Ljava/lang/String;
            ldc "Unsupported target type"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
        end local 6 // java.lang.ClassCastException e
        end local 5 // org.graalvm.polyglot.Value v
        10: .line 708
      StackMap locals:
      StackMap stack:
            aload 4 /* c */
            ifnull 16
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 4 /* c */
            ifnull 12
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      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 709
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   17     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   12     4       c  Lorg/graalvm/polyglot/Context;
            5   10     5       v  Lorg/graalvm/polyglot/Value;
            9   10     6       e  Ljava/lang/ClassCastException;
      Exception table:
        from    to  target  type
           5     7       8  Class java.lang.ClassCastException
           3    10      11  any
           2    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void testAdapterClassImplementationsNotAllowed();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=1
        start local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
         0: .line 713
            invokestatic org.graalvm.polyglot.HostAccess.newBuilder:()Lorg/graalvm/polyglot/HostAccess$Builder;
            ldc Lorg/graalvm/polyglot/HostAccess$Export;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.allowAccessAnnotatedBy:(Ljava/lang/Class;)Lorg/graalvm/polyglot/HostAccess$Builder;
            invokevirtual org.graalvm.polyglot.HostAccess$Builder.build:()Lorg/graalvm/polyglot/HostAccess;
            astore 1 /* access */
        start local 1 // org.graalvm.polyglot.HostAccess access
         1: .line 714
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: iconst_0
            anewarray java.lang.String
            invokestatic org.graalvm.polyglot.Context.newBuilder:([Ljava/lang/String;)Lorg/graalvm/polyglot/Context$Builder;
            aload 1 /* access */
            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 /* c */
        start local 4 // org.graalvm.polyglot.Context c
         3: .line 715
            aload 4 /* c */
            ldc "proxyLanguage"
            invokevirtual org.graalvm.polyglot.Context.initialize:(Ljava/lang/String;)Z
            pop
         4: .line 716
            aload 4 /* c */
            new com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl
            dup
            invokespecial com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl.<init>:()V
            invokevirtual org.graalvm.polyglot.Context.asValue:(Ljava/lang/Object;)Lorg/graalvm/polyglot/Value;
            astore 5 /* v */
        start local 5 // org.graalvm.polyglot.Value v
         5: .line 718
            aload 5 /* v */
            ldc Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest$MarkedClass;
            invokevirtual org.graalvm.polyglot.Value.as:(Ljava/lang/Class;)Ljava/lang/Object;
            pop
         6: .line 719
            invokestatic org.junit.Assert.fail:()V
         7: .line 720
            goto 10
      StackMap locals: com.oracle.truffle.api.test.polyglot.ExposeToGuestTest org.graalvm.polyglot.HostAccess java.lang.Throwable java.lang.Throwable org.graalvm.polyglot.Context org.graalvm.polyglot.Value
      StackMap stack: java.lang.ClassCastException
         8: astore 6 /* e */
        start local 6 // java.lang.ClassCastException e
         9: .line 721
            aload 6 /* e */
            invokevirtual java.lang.ClassCastException.getMessage:()Ljava/lang/String;
            ldc "Unsupported target type"
            invokestatic org.hamcrest.CoreMatchers.containsString:(Ljava/lang/String;)Lorg/hamcrest/Matcher;
            invokestatic org.junit.Assert.assertThat:(Ljava/lang/Object;Lorg/hamcrest/Matcher;)V
        end local 6 // java.lang.ClassCastException e
        end local 5 // org.graalvm.polyglot.Value v
        10: .line 723
      StackMap locals:
      StackMap stack:
            aload 4 /* c */
            ifnull 16
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
            goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        11: astore 2
            aload 4 /* c */
            ifnull 12
            aload 4 /* c */
            invokevirtual org.graalvm.polyglot.Context.close:()V
        end local 4 // org.graalvm.polyglot.Context c
      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 724
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.graalvm.polyglot.HostAccess access
        end local 0 // com.oracle.truffle.api.test.polyglot.ExposeToGuestTest this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Lcom/oracle/truffle/api/test/polyglot/ExposeToGuestTest;
            1   17     1  access  Lorg/graalvm/polyglot/HostAccess;
            3   12     4       c  Lorg/graalvm/polyglot/Context;
            5   10     5       v  Lorg/graalvm/polyglot/Value;
            9   10     6       e  Ljava/lang/ClassCastException;
      Exception table:
        from    to  target  type
           5     7       8  Class java.lang.ClassCastException
           3    10      11  any
           2    13      13  any
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  private static java.lang.Object lambda$0(java.lang.Number);
    descriptor: (Ljava/lang/Number;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Number ignore
         0: .line 204
            ldc "functional foo"
            areturn
        end local 0 // java.lang.Number ignore
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0  ignore  Ljava/lang/Number;

  private static java.lang.Object lambda$1(boolean[], boolean, java.lang.Number);
    descriptor: ([ZZLjava/lang/Number;)Ljava/lang/Object;
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=4, locals=3, args_size=3
        start local 2 // java.lang.Number n
         0: .line 283
            aload 0
            iconst_0
            iconst_1
            bastore
         1: .line 284
            iload 1
            ifeq 3
         2: .line 285
            iconst_1
            anewarray java.lang.Number
            dup
            iconst_0
            aload 2 /* n */
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
         3: .line 287
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray java.lang.Number
            dup
            iconst_0
            aload 2 /* n */
            aastore
            areturn
        end local 2 // java.lang.Number n
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     2     n  Ljava/lang/Number;

  private static boolean lambda$2(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 305
            aload 0 /* c */
            ldc "FieldAccess"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // java.lang.String c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     c  Ljava/lang/String;

  private static boolean lambda$3(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 380
            aload 0 /* c */
            ldc "ConstructorAccess"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ireturn
        end local 0 // java.lang.String c
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     c  Ljava/lang/String;
}
SourceFile: "ExposeToGuestTest.java"
NestMembers:
  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessMe  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AllowedConstructorAccess  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Bar  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$DeniedConstructorAccess  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$EmptyInterface  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FieldAccess  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Foo  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$NoDefaultConstructor  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PackagePrivateBar  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateChangedFoo  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateFoo  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional  com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface
InnerClasses:
  public final Env = com.oracle.truffle.api.TruffleLanguage$Env of com.oracle.truffle.api.TruffleLanguage
  public abstract AccessMe = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessMe of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public AccessibleValue = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AccessibleValue of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public AllowedConstructorAccess = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$AllowedConstructorAccess of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  Bar = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Bar of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public DeniedConstructorAccess = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$DeniedConstructorAccess of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  abstract EmptyInterface = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$EmptyInterface of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public ExportedValue = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$ExportedValue of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public FieldAccess = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FieldAccess of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public Foo = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Foo of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public abstract FooInterface = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$FooInterface of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public Impl = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Impl of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public abstract MarkedClass = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedClass of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  abstract MarkedFunctional = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedFunctional of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  abstract MarkedInterface = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$MarkedInterface of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public abstract NoDefaultConstructor = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$NoDefaultConstructor of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public Overloaded = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$Overloaded of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  PackagePrivateBar = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PackagePrivateBar of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public PrivateChangedFoo = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateChangedFoo of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  PrivateFoo = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PrivateFoo of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public PublicValue = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$PublicValue of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  abstract UnmarkedFunctional = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedFunctional of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  abstract UnmarkedInterface = com.oracle.truffle.api.test.polyglot.ExposeToGuestTest$UnmarkedInterface of com.oracle.truffle.api.test.polyglot.ExposeToGuestTest
  public LanguageContext = com.oracle.truffle.api.test.polyglot.ProxyLanguage$LanguageContext of com.oracle.truffle.api.test.polyglot.ProxyLanguage
  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
  public abstract Export = org.graalvm.polyglot.HostAccess$Export of org.graalvm.polyglot.HostAccess