public class javassist.URLClassPath implements javassist.ClassPath
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: javassist.URLClassPath
  super_class: java.lang.Object
{
  protected java.lang.String hostname;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected int port;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String directory;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  protected java.lang.String packageName;
    descriptor: Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED

  public void <init>(java.lang.String, int, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=5
        start local 0 // javassist.URLClassPath this
        start local 1 // java.lang.String host
        start local 2 // int port
        start local 3 // java.lang.String directory
        start local 4 // java.lang.String packageName
         0: .line 63
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 65
            aload 0 /* this */
            aload 1 /* host */
            putfield javassist.URLClassPath.hostname:Ljava/lang/String;
         2: .line 66
            aload 0 /* this */
            iload 2 /* port */
            putfield javassist.URLClassPath.port:I
         3: .line 67
            aload 0 /* this */
            aload 3 /* directory */
            putfield javassist.URLClassPath.directory:Ljava/lang/String;
         4: .line 68
            aload 0 /* this */
            aload 4 /* packageName */
            putfield javassist.URLClassPath.packageName:Ljava/lang/String;
         5: .line 69
            return
        end local 4 // java.lang.String packageName
        end local 3 // java.lang.String directory
        end local 2 // int port
        end local 1 // java.lang.String host
        end local 0 // javassist.URLClassPath this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Ljavassist/URLClassPath;
            0    6     1         host  Ljava/lang/String;
            0    6     2         port  I
            0    6     3    directory  Ljava/lang/String;
            0    6     4  packageName  Ljava/lang/String;
    MethodParameters:
             Name  Flags
      host         
      port         
      directory    
      packageName  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // javassist.URLClassPath this
         0: .line 73
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield javassist.URLClassPath.hostname:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield javassist.URLClassPath.port:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield javassist.URLClassPath.directory:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 0 // javassist.URLClassPath this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljavassist/URLClassPath;

  public java.io.InputStream openClassfile(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // javassist.URLClassPath this
        start local 1 // java.lang.String classname
         0: .line 84
            aload 0 /* this */
            aload 1 /* classname */
            invokevirtual javassist.URLClassPath.openClassfile0:(Ljava/lang/String;)Ljava/net/URLConnection;
            astore 2 /* con */
        start local 2 // java.net.URLConnection con
         1: .line 85
            aload 2 /* con */
            ifnull 5
         2: .line 86
            aload 2 /* con */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
         3: areturn
        end local 2 // java.net.URLConnection con
         4: .line 88
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         5: .line 89
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String classname
        end local 0 // javassist.URLClassPath this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       this  Ljavassist/URLClassPath;
            0    6     1  classname  Ljava/lang/String;
            1    4     2        con  Ljava/net/URLConnection;
      Exception table:
        from    to  target  type
           0     3       4  Class java.io.IOException
    MethodParameters:
           Name  Flags
      classname  

  private java.net.URLConnection openClassfile0(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/URLConnection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // javassist.URLClassPath this
        start local 1 // java.lang.String classname
         0: .line 93
            aload 0 /* this */
            getfield javassist.URLClassPath.packageName:Ljava/lang/String;
            ifnull 1
            aload 1 /* classname */
            aload 0 /* this */
            getfield javassist.URLClassPath.packageName:Ljava/lang/String;
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 4
         1: .line 95
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 0 /* this */
            getfield javassist.URLClassPath.directory:Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* 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;
         2: .line 94
            astore 2 /* jarname */
        start local 2 // java.lang.String jarname
         3: .line 96
            aload 0 /* this */
            getfield javassist.URLClassPath.hostname:Ljava/lang/String;
            aload 0 /* this */
            getfield javassist.URLClassPath.port:I
            aload 2 /* jarname */
            invokestatic javassist.URLClassPath.fetchClass0:(Ljava/lang/String;ILjava/lang/String;)Ljava/net/URLConnection;
            areturn
        end local 2 // java.lang.String jarname
         4: .line 98
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String classname
        end local 0 // javassist.URLClassPath this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    5     0       this  Ljavassist/URLClassPath;
            0    5     1  classname  Ljava/lang/String;
            3    4     2    jarname  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      classname  

  public java.net.URL find(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/URL;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // javassist.URLClassPath this
        start local 1 // java.lang.String classname
         0: .line 109
            aload 0 /* this */
            aload 1 /* classname */
            invokevirtual javassist.URLClassPath.openClassfile0:(Ljava/lang/String;)Ljava/net/URLConnection;
            astore 2 /* con */
        start local 2 // java.net.URLConnection con
         1: .line 110
            aload 2 /* con */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            astore 3 /* is */
        start local 3 // java.io.InputStream is
         2: .line 111
            aload 3 /* is */
            ifnull 7
         3: .line 112
            aload 3 /* is */
            invokevirtual java.io.InputStream.close:()V
         4: .line 113
            aload 2 /* con */
            invokevirtual java.net.URLConnection.getURL:()Ljava/net/URL;
         5: areturn
        end local 3 // java.io.InputStream is
        end local 2 // java.net.URLConnection con
         6: .line 116
      StackMap locals:
      StackMap stack: java.io.IOException
            pop
         7: .line 117
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.lang.String classname
        end local 0 // javassist.URLClassPath this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0       this  Ljavassist/URLClassPath;
            0    8     1  classname  Ljava/lang/String;
            1    6     2        con  Ljava/net/URLConnection;
            2    6     3         is  Ljava/io/InputStream;
      Exception table:
        from    to  target  type
           0     5       6  Class java.io.IOException
    MethodParameters:
           Name  Flags
      classname  

  public static byte[] fetchClass(java.lang.String, int, java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)[B
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=11, args_size=4
        start local 0 // java.lang.String host
        start local 1 // int port
        start local 2 // java.lang.String directory
        start local 3 // java.lang.String classname
         0: .line 135
            aload 0 /* host */
            iload 1 /* port */
         1: .line 136
            new java.lang.StringBuilder
            dup
            aload 2 /* directory */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* 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;
         2: .line 135
            invokestatic javassist.URLClassPath.fetchClass0:(Ljava/lang/String;ILjava/lang/String;)Ljava/net/URLConnection;
            astore 5 /* con */
        start local 5 // java.net.URLConnection con
         3: .line 137
            aload 5 /* con */
            invokevirtual java.net.URLConnection.getContentLength:()I
            istore 6 /* size */
        start local 6 // int size
         4: .line 138
            aload 5 /* con */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            astore 7 /* s */
        start local 7 // java.io.InputStream s
         5: .line 140
            iload 6 /* size */
            ifgt 8
         6: .line 141
            aload 7 /* s */
            invokestatic javassist.ClassPoolTail.readStream:(Ljava/io/InputStream;)[B
            astore 4 /* b */
        start local 4 // byte[] b
         7: goto 22
        end local 4 // byte[] b
         8: .line 143
      StackMap locals: java.lang.String int java.lang.String java.lang.String top java.net.URLConnection int java.io.InputStream
      StackMap stack:
            iload 6 /* size */
            newarray 8
            astore 4 /* b */
        start local 4 // byte[] b
         9: .line 144
            iconst_0
            istore 8 /* len */
        start local 8 // int len
        10: .line 146
      StackMap locals: java.lang.String int java.lang.String java.lang.String byte[] java.net.URLConnection int java.io.InputStream int
      StackMap stack:
            aload 7 /* s */
            aload 4 /* b */
            iload 8 /* len */
            iload 6 /* size */
            iload 8 /* len */
            isub
            invokevirtual java.io.InputStream.read:([BII)I
            istore 9 /* n */
        start local 9 // int n
        11: .line 147
            iload 9 /* n */
            ifge 15
        12: .line 148
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "the stream was closed: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 149
            aload 3 /* classname */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 148
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 151
      StackMap locals: int
      StackMap stack:
            iload 8 /* len */
            iload 9 /* n */
            iadd
            istore 8 /* len */
        end local 9 // int n
        16: .line 152
            iload 8 /* len */
            iload 6 /* size */
        17: .line 145
            if_icmplt 10
        end local 8 // int len
        18: .line 154
            goto 22
        end local 4 // byte[] b
        19: .line 155
      StackMap locals: java.lang.String int java.lang.String java.lang.String top java.net.URLConnection int java.io.InputStream
      StackMap stack: java.lang.Throwable
            astore 10
        20: .line 156
            aload 7 /* s */
            invokevirtual java.io.InputStream.close:()V
        21: .line 157
            aload 10
            athrow
        start local 4 // byte[] b
        22: .line 156
      StackMap locals: java.lang.String int java.lang.String java.lang.String byte[] java.net.URLConnection int java.io.InputStream
      StackMap stack:
            aload 7 /* s */
            invokevirtual java.io.InputStream.close:()V
        23: .line 159
            aload 4 /* b */
            areturn
        end local 7 // java.io.InputStream s
        end local 6 // int size
        end local 5 // java.net.URLConnection con
        end local 4 // byte[] b
        end local 3 // java.lang.String classname
        end local 2 // java.lang.String directory
        end local 1 // int port
        end local 0 // java.lang.String host
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   24     0       host  Ljava/lang/String;
            0   24     1       port  I
            0   24     2  directory  Ljava/lang/String;
            0   24     3  classname  Ljava/lang/String;
            7    8     4          b  [B
            9   19     4          b  [B
           22   24     4          b  [B
            3   24     5        con  Ljava/net/URLConnection;
            4   24     6       size  I
            5   24     7          s  Ljava/io/InputStream;
           10   18     8        len  I
           11   16     9          n  I
      Exception table:
        from    to  target  type
           5    19      19  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      host       
      port       
      directory  
      classname  

  private static java.net.URLConnection fetchClass0(java.lang.String, int, java.lang.String);
    descriptor: (Ljava/lang/String;ILjava/lang/String;)Ljava/net/URLConnection;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=3
        start local 0 // java.lang.String host
        start local 1 // int port
        start local 2 // java.lang.String filename
         0: .line 168
            new java.net.URL
            dup
            ldc "http"
            aload 0 /* host */
            iload 1 /* port */
            aload 2 /* filename */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
            astore 3 /* url */
        start local 3 // java.net.URL url
         1: .line 169
            goto 4
        end local 3 // java.net.URL url
         2: .line 170
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
            pop
         3: .line 172
            new java.io.IOException
            dup
            ldc "invalid URL?"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        start local 3 // java.net.URL url
         4: .line 175
      StackMap locals: java.net.URL
      StackMap stack:
            aload 3 /* url */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 4 /* con */
        start local 4 // java.net.URLConnection con
         5: .line 176
            aload 4 /* con */
            invokevirtual java.net.URLConnection.connect:()V
         6: .line 177
            aload 4 /* con */
            areturn
        end local 4 // java.net.URLConnection con
        end local 3 // java.net.URL url
        end local 2 // java.lang.String filename
        end local 1 // int port
        end local 0 // java.lang.String host
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      host  Ljava/lang/String;
            0    7     1      port  I
            0    7     2  filename  Ljava/lang/String;
            1    2     3       url  Ljava/net/URL;
            4    7     3       url  Ljava/net/URL;
            5    7     4       con  Ljava/net/URLConnection;
      Exception table:
        from    to  target  type
           0     1       2  Class java.net.MalformedURLException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      host      
      port      
      filename  
}
SourceFile: "URLClassPath.java"