final class com.oracle.truffle.polyglot.HostAdapterClassLoader
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.oracle.truffle.polyglot.HostAdapterClassLoader
  super_class: java.lang.Object
{
  static final java.security.ProtectionDomain GENERATED_PROTECTION_DOMAIN;
    descriptor: Ljava/security/ProtectionDomain;
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  static final java.util.Collection<java.lang.String> VISIBLE_INTERNAL_CLASS_NAMES;
    descriptor: Ljava/util/Collection;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Collection<Ljava/lang/String;>;

  static final java.lang.String SERVICE_CLASS_NAME;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "com.oracle.truffle.polyglot.hostadapters.HostAdapterServices"

  private final java.lang.String className;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] classBytes;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=0, args_size=0
         0: .line 70
            invokestatic com.oracle.truffle.polyglot.HostAdapterClassLoader.createGeneratedProtectionDomain:()Ljava/security/ProtectionDomain;
            putstatic com.oracle.truffle.polyglot.HostAdapterClassLoader.GENERATED_PROTECTION_DOMAIN:Ljava/security/ProtectionDomain;
         1: .line 72
            new java.util.HashSet
            dup
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            ldc Lorg/graalvm/polyglot/Value;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            invokespecial java.util.HashSet.<init>:(Ljava/util/Collection;)V
         2: .line 71
            invokestatic java.util.Collections.unmodifiableCollection:(Ljava/util/Collection;)Ljava/util/Collection;
            putstatic com.oracle.truffle.polyglot.HostAdapterClassLoader.VISIBLE_INTERNAL_CLASS_NAMES:Ljava/util/Collection;
         3: .line 73
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.lang.String, byte[]);
    descriptor: (Ljava/lang/String;[B)V
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
        start local 1 // java.lang.String className
        start local 2 // byte[] classBytes
         0: .line 82
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 83
            aload 0 /* this */
            aload 1 /* className */
            bipush 47
            bipush 46
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            putfield com.oracle.truffle.polyglot.HostAdapterClassLoader.className:Ljava/lang/String;
         2: .line 84
            aload 0 /* this */
            aload 2 /* classBytes */
            putfield com.oracle.truffle.polyglot.HostAdapterClassLoader.classBytes:[B
         3: .line 85
            return
        end local 2 // byte[] classBytes
        end local 1 // java.lang.String className
        end local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/oracle/truffle/polyglot/HostAdapterClassLoader;
            0    4     1   className  Ljava/lang/String;
            0    4     2  classBytes  [B
    MethodParameters:
            Name  Flags
      className   
      classBytes  

  java.lang.Class<?> generateClass(java.lang.ClassLoader, );
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/Object;)Ljava/lang/Class;
    flags: (0x0000) 
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
        start local 1 // java.lang.ClassLoader parentLoader
        start local 2 // java.lang.Object classOverrides
         0: .line 95
            aload 0 /* this */
            getfield com.oracle.truffle.polyglot.HostAdapterClassLoader.className:Ljava/lang/String;
            iconst_1
            aload 0 /* this */
            aload 1 /* parentLoader */
            aload 2 /* classOverrides */
            invokevirtual com.oracle.truffle.polyglot.HostAdapterClassLoader.createClassLoader:(Ljava/lang/ClassLoader;Ljava/lang/Object;)Ljava/lang/ClassLoader;
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
         1: areturn
         2: .line 96
      StackMap locals:
      StackMap stack: java.lang.ClassNotFoundException
            astore 3 /* e */
        start local 3 // java.lang.ClassNotFoundException e
         3: .line 97
            new java.lang.IllegalStateException
            dup
            aload 3 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // java.lang.ClassNotFoundException e
        end local 2 // java.lang.Object classOverrides
        end local 1 // java.lang.ClassLoader parentLoader
        end local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    4     0            this  Lcom/oracle/truffle/polyglot/HostAdapterClassLoader;
            0    4     1    parentLoader  Ljava/lang/ClassLoader;
            0    4     2  classOverrides  Ljava/lang/Object;
            3    4     3               e  Ljava/lang/ClassNotFoundException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.ClassNotFoundException
    Signature: (Ljava/lang/ClassLoader;Ljava/lang/Object;)Ljava/lang/Class<*>;
    MethodParameters:
                Name  Flags
      parentLoader    
      classOverrides  

  private java.lang.ClassLoader createClassLoader(java.lang.ClassLoader, java.lang.Object);
    descriptor: (Ljava/lang/ClassLoader;Ljava/lang/Object;)Ljava/lang/ClassLoader;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
        start local 1 // java.lang.ClassLoader parentLoader
        start local 2 // java.lang.Object classOverrides
         0: .line 102
            new com.oracle.truffle.polyglot.HostAdapterClassLoader$GeneratedClassLoader
            dup
            aload 0 /* this */
            aload 1 /* parentLoader */
            aload 2 /* classOverrides */
            invokespecial com.oracle.truffle.polyglot.HostAdapterClassLoader$GeneratedClassLoader.<init>:(Lcom/oracle/truffle/polyglot/HostAdapterClassLoader;Ljava/lang/ClassLoader;Ljava/lang/Object;)V
            areturn
        end local 2 // java.lang.Object classOverrides
        end local 1 // java.lang.ClassLoader parentLoader
        end local 0 // com.oracle.truffle.polyglot.HostAdapterClassLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Lcom/oracle/truffle/polyglot/HostAdapterClassLoader;
            0    1     1    parentLoader  Ljava/lang/ClassLoader;
            0    1     2  classOverrides  Ljava/lang/Object;
    MethodParameters:
                Name  Flags
      parentLoader    final
      classOverrides  final

  static boolean isAdapterInstance(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Object adapter
         0: .line 106
            aload 0 /* adapter */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokestatic com.oracle.truffle.polyglot.HostAdapterClassLoader.isGeneratedClass:(Ljava/lang/Class;)Z
            ireturn
        end local 0 // java.lang.Object adapter
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  adapter  Ljava/lang/Object;
    MethodParameters:
         Name  Flags
      adapter  

  static boolean isGeneratedClass(java.lang.Class<?>);
    descriptor: (Ljava/lang/Class;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.Class clazz
         0: .line 110
            aload 0 /* clazz */
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokestatic com.oracle.truffle.polyglot.HostAdapterClassLoader.isGeneratedClassLoader:(Ljava/lang/ClassLoader;)Z
            ireturn
        end local 0 // java.lang.Class clazz
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0  clazz  Ljava/lang/Class<*>;
    Signature: (Ljava/lang/Class<*>;)Z
    MethodParameters:
       Name  Flags
      clazz  

  static boolean isGeneratedClassLoader(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Z
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader classLoader
         0: .line 114
            aload 0 /* classLoader */
            instanceof com.oracle.truffle.polyglot.HostAdapterClassLoader$GeneratedClassLoader
            ireturn
        end local 0 // java.lang.ClassLoader classLoader
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  classLoader  Ljava/lang/ClassLoader;
    MethodParameters:
             Name  Flags
      classLoader  

  private static java.security.ProtectionDomain createGeneratedProtectionDomain();
    descriptor: ()Ljava/security/ProtectionDomain;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=1, args_size=0
         0: .line 188
            new java.security.Permissions
            dup
            invokespecial java.security.Permissions.<init>:()V
            astore 0 /* permissions */
        start local 0 // java.security.Permissions permissions
         1: .line 189
            aload 0 /* permissions */
            new java.security.AllPermission
            dup
            invokespecial java.security.AllPermission.<init>:()V
            invokevirtual java.security.Permissions.add:(Ljava/security/Permission;)V
         2: .line 190
            new java.security.ProtectionDomain
            dup
            new java.security.CodeSource
            dup
            aconst_null
            aconst_null
            invokespecial java.security.CodeSource.<init>:(Ljava/net/URL;[Ljava/security/CodeSigner;)V
            aload 0 /* permissions */
            invokespecial java.security.ProtectionDomain.<init>:(Ljava/security/CodeSource;Ljava/security/PermissionCollection;)V
            areturn
        end local 0 // java.security.Permissions permissions
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1    3     0  permissions  Ljava/security/Permissions;

  static org.graalvm.polyglot.Value getClassOverrides(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)Lorg/graalvm/polyglot/Value;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.lang.ClassLoader classLoader
         0: .line 195
            aload 0 /* classLoader */
            checkcast java.util.function.Supplier
            invokeinterface java.util.function.Supplier.get:()Ljava/lang/Object;
            checkcast org.graalvm.polyglot.Value
            areturn
        end local 0 // java.lang.ClassLoader classLoader
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0  classLoader  Ljava/lang/ClassLoader;
    MethodParameters:
             Name  Flags
      classLoader  

  static byte[] loadClassBytes(java.lang.String);
    descriptor: (Ljava/lang/String;)[B
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // java.lang.String className
         0: .line 199
            new java.lang.StringBuilder
            dup
            ldc "/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* className */
            bipush 46
            bipush 47
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ".class"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 1 /* classFileName */
        start local 1 // java.lang.String classFileName
         1: .line 200
            aconst_null
            astore 2
            aconst_null
            astore 3
         2: ldc Lcom/oracle/truffle/polyglot/HostAdapterClassLoader;
            aload 1 /* classFileName */
            invokevirtual java.lang.Class.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            aload 0 /* className */
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            checkcast java.io.InputStream
            astore 4 /* in */
        start local 4 // java.io.InputStream in
         3: .line 201
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 5 /* out */
        start local 5 // java.io.ByteArrayOutputStream out
         4: .line 202
            sipush 4000
            newarray 8
            astore 6 /* buf */
        start local 6 // byte[] buf
         5: .line 204
            goto 7
        start local 7 // int n
         6: .line 205
      StackMap locals: java.lang.String java.lang.String java.lang.Throwable java.lang.Throwable java.io.InputStream java.io.ByteArrayOutputStream byte[] int
      StackMap stack:
            aload 5 /* out */
            aload 6 /* buf */
            iconst_0
            iload 7 /* n */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
        end local 7 // int n
         7: .line 204
      StackMap locals:
      StackMap stack:
            aload 4 /* in */
            aload 6 /* buf */
            invokevirtual java.io.InputStream.read:([B)I
            dup
            istore 7 /* n */
        start local 7 // int n
         8: ifgt 6
         9: .line 207
            aload 5 /* out */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
        10: .line 208
            aload 5 /* out */
            ifnull 11
            aload 5 /* out */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
      StackMap locals: java.lang.String java.lang.String java.lang.Throwable java.lang.Throwable java.io.InputStream java.io.ByteArrayOutputStream byte[] int
      StackMap stack: byte[]
        11: aload 4 /* in */
            ifnull 12
            aload 4 /* in */
            invokevirtual java.io.InputStream.close:()V
        12: .line 207
      StackMap locals:
      StackMap stack: byte[]
            areturn
        end local 7 // int n
        end local 6 // byte[] buf
      StackMap locals: java.lang.String java.lang.String java.lang.Throwable java.lang.Throwable java.io.InputStream java.io.ByteArrayOutputStream
      StackMap stack: java.lang.Throwable
        13: astore 2
        14: .line 208
            aload 5 /* out */
            ifnull 15
            aload 5 /* out */
            invokevirtual java.io.ByteArrayOutputStream.close:()V
        end local 5 // java.io.ByteArrayOutputStream out
      StackMap locals:
      StackMap stack:
        15: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 3
            aload 2
            ifnonnull 17
            aload 3
            astore 2
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 2
            aload 3
            if_acmpeq 18
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 4 /* in */
            ifnull 19
            aload 4 /* in */
            invokevirtual java.io.InputStream.close:()V
        end local 4 // java.io.InputStream in
      StackMap locals:
      StackMap stack:
        19: aload 2
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 3
            aload 2
            ifnonnull 21
            aload 3
            astore 2
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 2
            aload 3
            if_acmpeq 22
            aload 2
            aload 3
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 2
            athrow
      StackMap locals: java.lang.String java.lang.String
      StackMap stack: java.io.IOException
        23: astore 2 /* e */
        start local 2 // java.io.IOException e
        24: .line 209
            new java.lang.IllegalStateException
            dup
            aload 2 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException e
        end local 1 // java.lang.String classFileName
        end local 0 // java.lang.String className
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   25     0      className  Ljava/lang/String;
            1   25     1  classFileName  Ljava/lang/String;
            3   19     4             in  Ljava/io/InputStream;
            4   15     5            out  Ljava/io/ByteArrayOutputStream;
            5   13     6            buf  [B
            6    7     7              n  I
            8   13     7              n  I
           24   25     2              e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           4    10      13  any
           3    11      16  any
          13    16      16  any
           2    12      20  any
          13    20      20  any
           1    12      23  Class java.io.IOException
          13    23      23  Class java.io.IOException
    MethodParameters:
           Name  Flags
      className  
}
SourceFile: "HostAdapterClassLoader.java"
NestMembers:
  com.oracle.truffle.polyglot.HostAdapterClassLoader$GeneratedClassLoader  com.oracle.truffle.polyglot.HostAdapterClassLoader$LazyClassBytes
InnerClasses:
  final GeneratedClassLoader = com.oracle.truffle.polyglot.HostAdapterClassLoader$GeneratedClassLoader of com.oracle.truffle.polyglot.HostAdapterClassLoader
  abstract LazyClassBytes = com.oracle.truffle.polyglot.HostAdapterClassLoader$LazyClassBytes of com.oracle.truffle.polyglot.HostAdapterClassLoader