public class com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest
  super_class: java.lang.Object
{
  private java.lang.ClassLoader loader;
    descriptor: Ljava/lang/ClassLoader;
    flags: (0x0002) ACC_PRIVATE

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

  public void storeLoader();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
         0: .line 61
            aload 0 /* this */
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getContextClassLoader:()Ljava/lang/ClassLoader;
            putfield com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest.loader:Ljava/lang/ClassLoader;
         1: .line 62
            return
        end local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/test/SLSeparatedClassLoadersTest;
    RuntimeVisibleAnnotations: 
      org.junit.Before()

  public void sdkAndTruffleLanguageAPIAndSLInSeparateClassLoaders();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=14, args_size=1
        start local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
         0: .line 66
            ldc Lorg/graalvm/polyglot/Engine;
            invokevirtual java.lang.Class.getProtectionDomain:()Ljava/security/ProtectionDomain;
            astore 1 /* sdkDomain */
        start local 1 // java.security.ProtectionDomain sdkDomain
         1: iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 67
            aload 1 /* sdkDomain */
            aastore
            invokestatic org.junit.Assume.assumeNotNull:([Ljava/lang/Object;)V
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         3: .line 68
            aload 1 /* sdkDomain */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
            aastore
            invokestatic org.junit.Assume.assumeNotNull:([Ljava/lang/Object;)V
         4: .line 69
            aload 1 /* sdkDomain */
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
            invokevirtual java.security.CodeSource.getLocation:()Ljava/net/URL;
            astore 2 /* sdkURL */
        start local 2 // java.net.URL sdkURL
         5: iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         6: .line 70
            aload 2 /* sdkURL */
            aastore
            invokestatic org.junit.Assume.assumeNotNull:([Ljava/lang/Object;)V
         7: .line 72
            ldc Lcom/oracle/truffle/api/Truffle;
            invokevirtual java.lang.Class.getProtectionDomain:()Ljava/security/ProtectionDomain;
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
            invokevirtual java.security.CodeSource.getLocation:()Ljava/net/URL;
            astore 3 /* truffleURL */
        start local 3 // java.net.URL truffleURL
         8: iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         9: .line 73
            aload 3 /* truffleURL */
            aastore
            invokestatic org.junit.Assume.assumeNotNull:([Ljava/lang/Object;)V
        10: .line 75
            ldc Lcom/oracle/truffle/sl/SLLanguage;
            invokevirtual java.lang.Class.getProtectionDomain:()Ljava/security/ProtectionDomain;
            invokevirtual java.security.ProtectionDomain.getCodeSource:()Ljava/security/CodeSource;
            invokevirtual java.security.CodeSource.getLocation:()Ljava/net/URL;
            astore 4 /* slURL */
        start local 4 // java.net.URL slURL
        11: iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        12: .line 76
            aload 4 /* slURL */
            aastore
            invokestatic org.junit.Assume.assumeNotNull:([Ljava/lang/Object;)V
        13: .line 78
            ldc Lorg/graalvm/polyglot/Engine;
            invokevirtual java.lang.Class.getClassLoader:()Ljava/lang/ClassLoader;
            invokevirtual java.lang.ClassLoader.getParent:()Ljava/lang/ClassLoader;
            astore 5 /* parent */
        start local 5 // java.lang.ClassLoader parent
        14: .line 80
            new java.net.URLClassLoader
            dup
            iconst_1
            anewarray java.net.URL
            dup
            iconst_0
            aload 2 /* sdkURL */
            aastore
            aload 5 /* parent */
            invokespecial java.net.URLClassLoader.<init>:([Ljava/net/URL;Ljava/lang/ClassLoader;)V
            astore 6 /* sdkLoader */
        start local 6 // java.net.URLClassLoader sdkLoader
        15: .line 83
            ldc "com.oracle.truffle.api.TruffleLanguage"
            iconst_0
            aload 6 /* sdkLoader */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
            pop
        16: .line 84
            iconst_1
            istore 7 /* sdkLoaderLoadsTruffleLanguage */
        start local 7 // boolean sdkLoaderLoadsTruffleLanguage
        17: .line 85
            goto 20
        end local 7 // boolean sdkLoaderLoadsTruffleLanguage
      StackMap locals: com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest java.security.ProtectionDomain java.net.URL java.net.URL java.net.URL java.lang.ClassLoader java.net.URLClassLoader
      StackMap stack: java.lang.ClassNotFoundException
        18: pop
        19: .line 86
            iconst_0
            istore 7 /* sdkLoaderLoadsTruffleLanguage */
        start local 7 // boolean sdkLoaderLoadsTruffleLanguage
        20: .line 88
      StackMap locals: int
      StackMap stack:
            iload 7 /* sdkLoaderLoadsTruffleLanguage */
            invokestatic org.junit.Assume.assumeFalse:(Z)V
        21: .line 89
            new java.net.URLClassLoader
            dup
            iconst_1
            anewarray java.net.URL
            dup
            iconst_0
            aload 3 /* truffleURL */
            aastore
            aload 6 /* sdkLoader */
            invokespecial java.net.URLClassLoader.<init>:([Ljava/net/URL;Ljava/lang/ClassLoader;)V
            astore 8 /* truffleLoader */
        start local 8 // java.net.URLClassLoader truffleLoader
        22: .line 90
            new java.net.URLClassLoader
            dup
            iconst_1
            anewarray java.net.URL
            dup
            iconst_0
            aload 4 /* slURL */
            aastore
            aload 8 /* truffleLoader */
            invokespecial java.net.URLClassLoader.<init>:([Ljava/net/URL;Ljava/lang/ClassLoader;)V
            astore 9 /* slLoader */
        start local 9 // java.net.URLClassLoader slLoader
        23: .line 91
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 9 /* slLoader */
            invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
        24: .line 93
            aload 6 /* sdkLoader */
            ldc Lorg/graalvm/polyglot/Engine;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            invokevirtual java.net.URLClassLoader.loadClass:(Ljava/lang/String;)Ljava/lang/Class;
            astore 10 /* engineClass */
        start local 10 // java.lang.Class engineClass
        25: .line 94
            aload 10 /* engineClass */
            ldc "create"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            aconst_null
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            astore 11 /* engine */
        start local 11 // java.lang.Object engine
        26: .line 95
            ldc "Engine has been created"
            aload 11 /* engine */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/String;Ljava/lang/Object;)V
        27: .line 97
            aload 10 /* engineClass */
            ldc "getLanguages"
            iconst_0
            anewarray java.lang.Class
            invokevirtual java.lang.Class.getMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
            aload 11 /* engine */
            iconst_0
            anewarray java.lang.Object
            invokevirtual java.lang.reflect.Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Map
            astore 12 /* languages */
        start local 12 // java.util.Map languages
        28: .line 98
            aload 12 /* languages */
            ldc "sl"
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 13 /* lang */
        start local 13 // java.lang.Object lang
        29: .line 99
            new java.lang.StringBuilder
            dup
            ldc "SL language found: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* languages */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 13 /* lang */
            invokestatic org.junit.Assert.assertNotNull:(Ljava/lang/String;Ljava/lang/Object;)V
        30: .line 100
            return
        end local 13 // java.lang.Object lang
        end local 12 // java.util.Map languages
        end local 11 // java.lang.Object engine
        end local 10 // java.lang.Class engineClass
        end local 9 // java.net.URLClassLoader slLoader
        end local 8 // java.net.URLClassLoader truffleLoader
        end local 7 // boolean sdkLoaderLoadsTruffleLanguage
        end local 6 // java.net.URLClassLoader sdkLoader
        end local 5 // java.lang.ClassLoader parent
        end local 4 // java.net.URL slURL
        end local 3 // java.net.URL truffleURL
        end local 2 // java.net.URL sdkURL
        end local 1 // java.security.ProtectionDomain sdkDomain
        end local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
      LocalVariableTable:
        Start  End  Slot                           Name  Signature
            0   31     0                           this  Lcom/oracle/truffle/sl/test/SLSeparatedClassLoadersTest;
            1   31     1                      sdkDomain  Ljava/security/ProtectionDomain;
            5   31     2                         sdkURL  Ljava/net/URL;
            8   31     3                     truffleURL  Ljava/net/URL;
           11   31     4                          slURL  Ljava/net/URL;
           14   31     5                         parent  Ljava/lang/ClassLoader;
           15   31     6                      sdkLoader  Ljava/net/URLClassLoader;
           17   18     7  sdkLoaderLoadsTruffleLanguage  Z
           20   31     7  sdkLoaderLoadsTruffleLanguage  Z
           22   31     8                  truffleLoader  Ljava/net/URLClassLoader;
           23   31     9                       slLoader  Ljava/net/URLClassLoader;
           25   31    10                    engineClass  Ljava/lang/Class<*>;
           26   31    11                         engine  Ljava/lang/Object;
           28   31    12                      languages  Ljava/util/Map<**>;
           29   31    13                           lang  Ljava/lang/Object;
      Exception table:
        from    to  target  type
          15    17      18  Class java.lang.ClassNotFoundException
    Exceptions:
      throws java.lang.Exception
    RuntimeVisibleAnnotations: 
      org.junit.Test()

  public void resetLoader();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
         0: .line 104
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* this */
            getfield com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest.loader:Ljava/lang/ClassLoader;
            invokevirtual java.lang.Thread.setContextClassLoader:(Ljava/lang/ClassLoader;)V
         1: .line 105
            return
        end local 0 // com.oracle.truffle.sl.test.SLSeparatedClassLoadersTest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/oracle/truffle/sl/test/SLSeparatedClassLoadersTest;
    RuntimeVisibleAnnotations: 
      org.junit.After()
}
SourceFile: "SLSeparatedClassLoadersTest.java"