public class org.jruby.util.JRubyClassLoader extends org.jruby.util.ClassDefiningJRubyClassLoader
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.jruby.util.JRubyClassLoader
  super_class: org.jruby.util.ClassDefiningJRubyClassLoader
{
  private static final org.jruby.util.log.Logger LOG;
    descriptor: Lorg/jruby/util/log/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private java.lang.Runnable unloader;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0002) ACC_PRIVATE

  private static volatile java.io.File tempDir;
    descriptor: Ljava/io/File;
    flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE

  private java.util.List<java.lang.String> cachedJarPaths;
    descriptor: Ljava/util/List;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/List<Ljava/lang/String;>;

  private static final java.lang.String TEMP_DIR_PREFIX;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "jruby-"

  private static java.lang.String tempDirName;
    descriptor: Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 62
            ldc Lorg/jruby/util/JRubyClassLoader;
            invokestatic org.jruby.util.log.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/jruby/util/log/Logger;
            putstatic org.jruby.util.JRubyClassLoader.LOG:Lorg/jruby/util/log/Logger;
         1: .line 133
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.ClassLoader);
    descriptor: (Ljava/lang/ClassLoader;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.jruby.util.JRubyClassLoader this
        start local 1 // java.lang.ClassLoader parent
         0: .line 71
            aload 0 /* this */
            aload 1 /* parent */
            invokespecial org.jruby.util.ClassDefiningJRubyClassLoader.<init>:(Ljava/lang/ClassLoader;)V
         1: .line 68
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokestatic java.util.Collections.synchronizedList:(Ljava/util/List;)Ljava/util/List;
            putfield org.jruby.util.JRubyClassLoader.cachedJarPaths:Ljava/util/List;
         2: .line 72
            return
        end local 1 // java.lang.ClassLoader parent
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/jruby/util/JRubyClassLoader;
            0    3     1  parent  Ljava/lang/ClassLoader;
    MethodParameters:
        Name  Flags
      parent  

  public void addURL(java.net.URL);
    descriptor: (Ljava/net/URL;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // org.jruby.util.JRubyClassLoader this
        start local 1 // java.net.URL url
         0: .line 79
            aload 1 /* url */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            ldc "!/"
            invokevirtual java.lang.String.contains:(Ljava/lang/CharSequence;)Z
            ifne 2
         1: .line 80
            aload 1 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            ldc "file"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
            aload 1 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            ldc "http"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
            aload 1 /* url */
            invokevirtual java.net.URL.getProtocol:()Ljava/lang/String;
            ldc "https"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 29
         2: .line 82
      StackMap locals:
      StackMap stack:
            ldc "jruby"
            new java.io.File
            dup
            aload 1 /* url */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.getName:()Ljava/lang/String;
            invokestatic org.jruby.util.JRubyClassLoader.getTempDir:()Ljava/io/File;
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
            astore 2 /* f */
        start local 2 // java.io.File f
         3: .line 84
            aconst_null
            astore 3
            aconst_null
            astore 4
         4: new java.io.FileOutputStream
            dup
            aload 2 /* f */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 5 /* fileOut */
        start local 5 // java.io.FileOutputStream fileOut
         5: .line 85
            aload 1 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 6 /* urlIn */
        start local 6 // java.io.InputStream urlIn
         6: .line 87
            new java.io.BufferedOutputStream
            dup
            aload 5 /* fileOut */
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 7 /* out */
        start local 7 // java.io.OutputStream out
         7: .line 88
            new java.io.BufferedInputStream
            dup
            aload 6 /* urlIn */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            astore 8 /* in */
        start local 8 // java.io.InputStream in
         8: .line 90
            aload 8 /* in */
            invokevirtual java.io.InputStream.read:()I
            istore 9 /* i */
        start local 9 // int i
         9: .line 91
            goto 12
        10: .line 92
      StackMap locals: org.jruby.util.JRubyClassLoader java.net.URL java.io.File java.lang.Throwable java.lang.Throwable java.io.FileOutputStream java.io.InputStream java.io.OutputStream java.io.InputStream int
      StackMap stack:
            aload 7 /* out */
            iload 9 /* i */
            invokevirtual java.io.OutputStream.write:(I)V
        11: .line 93
            aload 8 /* in */
            invokevirtual java.io.InputStream.read:()I
            istore 9 /* i */
        12: .line 91
      StackMap locals:
      StackMap stack:
            iload 9 /* i */
            iconst_m1
            if_icmpne 10
        13: .line 95
            aload 7 /* out */
            invokevirtual java.io.OutputStream.flush:()V
        14: .line 96
            aload 2 /* f */
            invokevirtual java.io.File.toURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toURL:()Ljava/net/URL;
            astore 1 /* url */
        15: .line 98
            aload 0 /* this */
            getfield org.jruby.util.JRubyClassLoader.cachedJarPaths:Ljava/util/List;
            aload 1 /* url */
            invokestatic org.jruby.util.URLUtil.getPath:(Ljava/net/URL;)Ljava/lang/String;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // int i
        end local 8 // java.io.InputStream in
        end local 7 // java.io.OutputStream out
        16: .line 99
            aload 6 /* urlIn */
            ifnull 19
            aload 6 /* urlIn */
            invokevirtual java.io.InputStream.close:()V
            goto 19
      StackMap locals: org.jruby.util.JRubyClassLoader java.net.URL java.io.File java.lang.Throwable java.lang.Throwable java.io.FileOutputStream java.io.InputStream
      StackMap stack: java.lang.Throwable
        17: astore 3
            aload 6 /* urlIn */
            ifnull 18
            aload 6 /* urlIn */
            invokevirtual java.io.InputStream.close:()V
        end local 6 // java.io.InputStream urlIn
      StackMap locals:
      StackMap stack:
        18: aload 3
            athrow
      StackMap locals:
      StackMap stack:
        19: aload 5 /* fileOut */
            ifnull 29
            aload 5 /* fileOut */
            invokevirtual java.io.FileOutputStream.close:()V
            goto 29
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: astore 4
            aload 3
            ifnonnull 21
            aload 4
            astore 3
            goto 22
      StackMap locals:
      StackMap stack:
        21: aload 3
            aload 4
            if_acmpeq 22
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        22: aload 5 /* fileOut */
            ifnull 23
            aload 5 /* fileOut */
            invokevirtual java.io.FileOutputStream.close:()V
        end local 5 // java.io.FileOutputStream fileOut
      StackMap locals:
      StackMap stack:
        23: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        24: astore 4
            aload 3
            ifnonnull 25
            aload 4
            astore 3
            goto 26
      StackMap locals:
      StackMap stack:
        25: aload 3
            aload 4
            if_acmpeq 26
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        26: aload 3
            athrow
        end local 2 // java.io.File f
        27: .line 100
      StackMap locals: org.jruby.util.JRubyClassLoader java.net.URL
      StackMap stack: java.io.IOException
            astore 2 /* e */
        start local 2 // java.io.IOException e
        28: .line 101
            new java.lang.RuntimeException
            dup
            ldc "BUG: we can not copy embedded jar to temp directory"
            aload 2 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 2 // java.io.IOException e
        29: .line 104
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* url */
            invokespecial org.jruby.util.ClassDefiningJRubyClassLoader.addURL:(Ljava/net/URL;)V
        30: .line 105
            return
        end local 1 // java.net.URL url
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   31     0     this  Lorg/jruby/util/JRubyClassLoader;
            0   31     1      url  Ljava/net/URL;
            3   27     2        f  Ljava/io/File;
            5   23     5  fileOut  Ljava/io/FileOutputStream;
            6   18     6    urlIn  Ljava/io/InputStream;
            7   16     7      out  Ljava/io/OutputStream;
            8   16     8       in  Ljava/io/InputStream;
            9   16     9        i  I
           28   29     2        e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           6    16      17  any
           5    19      20  any
           4    24      24  any
           2    27      27  Class java.io.IOException
    MethodParameters:
      Name  Flags
      url   

  private static synchronized java.io.File getTempDir();
    descriptor: ()Ljava/io/File;
    flags: (0x002a) ACC_PRIVATE, ACC_STATIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=0, args_size=0
         0: .line 108
            getstatic org.jruby.util.JRubyClassLoader.tempDir:Ljava/io/File;
            ifnull 1
            getstatic org.jruby.util.JRubyClassLoader.tempDir:Ljava/io/File;
            areturn
         1: .line 110
      StackMap locals:
      StackMap stack:
            new java.io.File
            dup
            invokestatic org.jruby.util.JRubyClassLoader.systemTmpDir:()Ljava/lang/String;
            invokestatic org.jruby.util.JRubyClassLoader.tempDirName:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;Ljava/lang/String;)V
            putstatic org.jruby.util.JRubyClassLoader.tempDir:Ljava/io/File;
         2: .line 111
            getstatic org.jruby.util.JRubyClassLoader.tempDir:Ljava/io/File;
            invokevirtual java.io.File.mkdirs:()Z
            ifeq 4
         3: .line 112
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            new org.jruby.util.JRubyClassLoader$1
            dup
            invokespecial org.jruby.util.JRubyClassLoader$1.<init>:()V
            invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
         4: .line 129
      StackMap locals:
      StackMap stack:
            getstatic org.jruby.util.JRubyClassLoader.tempDir:Ljava/io/File;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static java.lang.String tempDirName();
    descriptor: ()Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=0
         0: .line 136
            getstatic org.jruby.util.JRubyClassLoader.tempDirName:Ljava/lang/String;
            astore 0 /* dirName */
        start local 0 // java.lang.String dirName
         1: .line 137
            aload 0 /* dirName */
            ifnull 2
            aload 0 /* dirName */
            areturn
         2: .line 139
      StackMap locals: java.lang.String
      StackMap stack:
            invokestatic java.lang.management.ManagementFactory.getRuntimeMXBean:()Ljava/lang/management/RuntimeMXBean;
            invokeinterface java.lang.management.RuntimeMXBean.getName:()Ljava/lang/String;
            astore 1 /* processName */
        start local 1 // java.lang.String processName
         3: .line 140
            new java.lang.StringBuilder
            dup
            ldc "jruby-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* processName */
            ldc "@"
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            iconst_0
            aaload
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            dup
            putstatic org.jruby.util.JRubyClassLoader.tempDirName:Ljava/lang/String;
         4: areturn
        end local 1 // java.lang.String processName
         5: .line 142
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* ex */
        start local 1 // java.lang.Throwable ex
         6: .line 143
            getstatic org.jruby.util.JRubyClassLoader.LOG:Lorg/jruby/util/log/Logger;
            aload 1 /* ex */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/Throwable;)V
         7: .line 144
            new java.lang.StringBuilder
            dup
            ldc "jruby-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lorg/jruby/util/JRubyClassLoader;
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            dup
            putstatic org.jruby.util.JRubyClassLoader.tempDirName:Ljava/lang/String;
            areturn
        end local 1 // java.lang.Throwable ex
        end local 0 // java.lang.String dirName
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            1    8     0      dirName  Ljava/lang/String;
            3    5     1  processName  Ljava/lang/String;
            6    8     1           ex  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     4       5  Class java.lang.Throwable

  private static java.lang.String systemTmpDir();
    descriptor: ()Ljava/lang/String;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 150
            ldc "java.io.tmpdir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
         1: areturn
         2: .line 152
      StackMap locals:
      StackMap stack: java.lang.SecurityException
            astore 0 /* ex */
        start local 0 // java.lang.SecurityException ex
         3: .line 153
            getstatic org.jruby.util.JRubyClassLoader.LOG:Lorg/jruby/util/log/Logger;
            ldc "could not access 'java.io.tmpdir' will use working directory"
            aload 0 /* ex */
            invokeinterface org.jruby.util.log.Logger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 0 // java.lang.SecurityException ex
         4: .line 155
            ldc ""
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            3    4     0    ex  Ljava/lang/SecurityException;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.SecurityException

  public void tearDown(boolean);
    descriptor: (Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.jruby.util.JRubyClassLoader this
        start local 1 // boolean debug
         0: .line 162
            aload 0 /* this */
            invokevirtual org.jruby.util.JRubyClassLoader.close:()V
         1: .line 163
            return
        end local 1 // boolean debug
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/jruby/util/JRubyClassLoader;
            0    2     1  debug  Z
    MethodParameters:
       Name  Flags
      debug  

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.jruby.util.JRubyClassLoader this
         0: .line 171
            aload 0 /* this */
            invokespecial org.jruby.util.ClassDefiningJRubyClassLoader.close:()V
         1: .line 172
            goto 4
         2: .line 173
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* ex */
        start local 1 // java.lang.Exception ex
         3: getstatic org.jruby.util.JRubyClassLoader.LOG:Lorg/jruby/util/log/Logger;
            aload 1 /* ex */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/Throwable;)V
        end local 1 // java.lang.Exception ex
         4: .line 178
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.util.JRubyClassLoader.getJDBCDriverUnloader:()Ljava/lang/Runnable;
            invokeinterface java.lang.Runnable.run:()V
         5: .line 179
            goto 8
         6: .line 180
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* ex */
        start local 1 // java.lang.Exception ex
         7: getstatic org.jruby.util.JRubyClassLoader.LOG:Lorg/jruby/util/log/Logger;
            aload 1 /* ex */
            invokeinterface org.jruby.util.log.Logger.debug:(Ljava/lang/Throwable;)V
        end local 1 // java.lang.Exception ex
         8: .line 182
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.jruby.util.JRubyClassLoader.terminateJarIndexCacheEntries:()V
         9: .line 183
            return
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/jruby/util/JRubyClassLoader;
            3    4     1    ex  Ljava/lang/Exception;
            7    8     1    ex  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Exception
           4     5       6  Class java.lang.Exception

  protected void terminateJarIndexCacheEntries();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.jruby.util.JRubyClassLoader this
         0: .line 186
            aload 0 /* this */
            getfield org.jruby.util.JRubyClassLoader.cachedJarPaths:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 2
            goto 7
      StackMap locals: org.jruby.util.JRubyClassLoader top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.String
            astore 1 /* jarPath */
        start local 1 // java.lang.String jarPath
         2: .line 189
            aload 1 /* jarPath */
            invokestatic org.jruby.util.JarResource.removeJarResource:(Ljava/lang/String;)Z
            pop
         3: .line 192
            new java.io.File
            dup
            aload 1 /* jarPath */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* jarFile */
        start local 3 // java.io.File jarFile
         4: .line 193
            aload 3 /* jarFile */
            invokevirtual java.io.File.delete:()Z
            pop
        end local 3 // java.io.File jarFile
         5: .line 194
            goto 7
      StackMap locals: org.jruby.util.JRubyClassLoader java.lang.String java.util.Iterator
      StackMap stack: java.lang.Exception
         6: pop
        end local 1 // java.lang.String jarPath
         7: .line 186
      StackMap locals: org.jruby.util.JRubyClassLoader top java.util.Iterator
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         8: .line 198
            return
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Lorg/jruby/util/JRubyClassLoader;
            2    7     1  jarPath  Ljava/lang/String;
            4    5     3  jarFile  Ljava/io/File;
      Exception table:
        from    to  target  type
           2     5       6  Class java.lang.Exception

  public synchronized java.lang.Runnable getJDBCDriverUnloader();
    descriptor: ()Ljava/lang/Runnable;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // org.jruby.util.JRubyClassLoader this
         0: .line 202
            aload 0 /* this */
            getfield org.jruby.util.JRubyClassLoader.unloader:Ljava/lang/Runnable;
            ifnonnull 15
         1: .line 204
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            ldc "/org/jruby/util/JDBCDriverUnloader.class"
            invokevirtual java.lang.Class.getResourceAsStream:(Ljava/lang/String;)Ljava/io/InputStream;
            astore 1 /* unloaderStream */
        start local 1 // java.io.InputStream unloaderStream
         2: .line 205
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 2 /* baos */
        start local 2 // java.io.ByteArrayOutputStream baos
         3: .line 206
            sipush 4096
            newarray 8
            astore 3 /* buf */
        start local 3 // byte[] buf
         4: .line 208
            goto 6
        start local 4 // int bytesRead
         5: .line 209
      StackMap locals: org.jruby.util.JRubyClassLoader java.io.InputStream java.io.ByteArrayOutputStream byte[] int
      StackMap stack:
            aload 2 /* baos */
            aload 3 /* buf */
            iconst_0
            iload 4 /* bytesRead */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
        end local 4 // int bytesRead
         6: .line 208
      StackMap locals:
      StackMap stack:
            aload 1 /* unloaderStream */
            aload 3 /* buf */
            invokevirtual java.io.InputStream.read:([B)I
            dup
            istore 4 /* bytesRead */
        start local 4 // int bytesRead
         7: iconst_m1
            if_icmpne 5
         8: .line 212
            aload 0 /* this */
            ldc "org.jruby.util.JDBCDriverUnloader"
            aload 2 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            invokevirtual org.jruby.util.JRubyClassLoader.defineClass:(Ljava/lang/String;[B)Ljava/lang/Class;
            astore 5 /* unloaderClass */
        start local 5 // java.lang.Class unloaderClass
         9: .line 213
            aload 0 /* this */
            aload 5 /* unloaderClass */
            invokevirtual java.lang.Class.newInstance:()Ljava/lang/Object;
            checkcast java.lang.Runnable
            putfield org.jruby.util.JRubyClassLoader.unloader:Ljava/lang/Runnable;
        end local 5 // java.lang.Class unloaderClass
        end local 4 // int bytesRead
        end local 3 // byte[] buf
        end local 2 // java.io.ByteArrayOutputStream baos
        end local 1 // java.io.InputStream unloaderStream
        10: .line 214
            goto 15
        11: .line 215
      StackMap locals: org.jruby.util.JRubyClassLoader
      StackMap stack: java.lang.RuntimeException
            astore 1 /* e */
        start local 1 // java.lang.RuntimeException e
        12: aload 1 /* e */
            athrow
        end local 1 // java.lang.RuntimeException e
        13: .line 216
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
        14: new java.lang.RuntimeException
            dup
            aload 1 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        15: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.jruby.util.JRubyClassLoader.unloader:Ljava/lang/Runnable;
            areturn
        end local 0 // org.jruby.util.JRubyClassLoader this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   16     0            this  Lorg/jruby/util/JRubyClassLoader;
            2   10     1  unloaderStream  Ljava/io/InputStream;
            3   10     2            baos  Ljava/io/ByteArrayOutputStream;
            4   10     3             buf  [B
            5    6     4       bytesRead  I
            7   10     4       bytesRead  I
            9   10     5   unloaderClass  Ljava/lang/Class<*>;
           12   13     1               e  Ljava/lang/RuntimeException;
           14   15     1               e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           1    10      11  Class java.lang.RuntimeException
           1    10      13  Class java.lang.Exception
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
}
SourceFile: "JRubyClassLoader.java"
NestMembers:
  org.jruby.util.JRubyClassLoader$1
InnerClasses:
  org.jruby.util.JRubyClassLoader$1