public class sun.net.www.protocol.jar.Handler extends java.net.URLStreamHandler
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: sun.net.www.protocol.jar.Handler
  super_class: java.net.URLStreamHandler
{
  private static final java.lang.String separator;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "!/"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.net.www.protocol.jar.Handler this
         0: .line 36
            aload 0 /* this */
            invokespecial java.net.URLStreamHandler.<init>:()V
            return
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/net/www/protocol/jar/Handler;

  protected java.net.URLConnection openConnection(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/net/URLConnection;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // sun.net.www.protocol.jar.Handler this
        start local 1 // java.net.URL u
         0: .line 42
            new sun.net.www.protocol.jar.JarURLConnection
            dup
            aload 1 /* u */
            aload 0 /* this */
            invokespecial sun.net.www.protocol.jar.JarURLConnection.<init>:(Ljava/net/URL;Lsun/net/www/protocol/jar/Handler;)V
            areturn
        end local 1 // java.net.URL u
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/net/www/protocol/jar/Handler;
            0    1     1     u  Ljava/net/URL;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      u     

  private int indexOfBangSlash(java.lang.String);
    descriptor: (Ljava/lang/String;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // sun.net.www.protocol.jar.Handler this
        start local 1 // java.lang.String spec
         0: .line 46
            aload 1 /* spec */
            invokevirtual java.lang.String.length:()I
            istore 2 /* indexOfBang */
        start local 2 // int indexOfBang
         1: .line 47
            goto 6
         2: .line 48
      StackMap locals: int
      StackMap stack:
            iload 2 /* indexOfBang */
            aload 1 /* spec */
            invokevirtual java.lang.String.length:()I
            iconst_1
            isub
            if_icmpeq 5
         3: .line 49
            aload 1 /* spec */
            iload 2 /* indexOfBang */
            iconst_1
            iadd
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 5
         4: .line 50
            iload 2 /* indexOfBang */
            iconst_1
            iadd
            ireturn
         5: .line 52
      StackMap locals:
      StackMap stack:
            iinc 2 /* indexOfBang */ -1
         6: .line 47
      StackMap locals:
      StackMap stack:
            aload 1 /* spec */
            bipush 33
            iload 2 /* indexOfBang */
            invokevirtual java.lang.String.lastIndexOf:(II)I
            dup
            istore 2 /* indexOfBang */
            iconst_m1
            if_icmpne 2
         7: .line 55
            iconst_m1
            ireturn
        end local 2 // int indexOfBang
        end local 1 // java.lang.String spec
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lsun/net/www/protocol/jar/Handler;
            0    8     1         spec  Ljava/lang/String;
            1    8     2  indexOfBang  I
    MethodParameters:
      Name  Flags
      spec  

  protected void parseURL(java.net.URL, java.lang.String, int, int);
    descriptor: (Ljava/net/URL;Ljava/lang/String;II)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=7, locals=14, args_size=5
        start local 0 // sun.net.www.protocol.jar.Handler this
        start local 1 // java.net.URL url
        start local 2 // java.lang.String spec
        start local 3 // int start
        start local 4 // int limit
         0: .line 60
            aconst_null
            astore 5 /* file */
        start local 5 // java.lang.String file
         1: .line 61
            aconst_null
            astore 6 /* ref */
        start local 6 // java.lang.String ref
         2: .line 63
            aload 2 /* spec */
            bipush 35
            iload 4 /* limit */
            invokevirtual java.lang.String.indexOf:(II)I
            istore 7 /* refPos */
        start local 7 // int refPos
         3: .line 64
            iload 7 /* refPos */
            iload 3 /* start */
            if_icmpne 4
            iconst_1
            goto 5
      StackMap locals: java.lang.String java.lang.String int
      StackMap stack:
         4: iconst_0
      StackMap locals:
      StackMap stack: int
         5: istore 8 /* refOnly */
        start local 8 // boolean refOnly
         6: .line 65
            iload 7 /* refPos */
            iconst_m1
            if_icmple 10
         7: .line 66
            aload 2 /* spec */
            iload 7 /* refPos */
            iconst_1
            iadd
            aload 2 /* spec */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 6 /* ref */
         8: .line 67
            iload 8 /* refOnly */
            ifeq 10
         9: .line 68
            aload 1 /* url */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            astore 5 /* file */
        10: .line 75
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 9 /* absoluteSpec */
        start local 9 // boolean absoluteSpec
        11: .line 76
            aload 2 /* spec */
            invokevirtual java.lang.String.length:()I
            iconst_4
            if_icmplt 13
        12: .line 77
            aload 2 /* spec */
            iconst_0
            iconst_4
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            ldc "jar:"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            istore 9 /* absoluteSpec */
        13: .line 79
      StackMap locals: int
      StackMap stack:
            aload 2 /* spec */
            iload 3 /* start */
            iload 4 /* limit */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* spec */
        14: .line 81
            iload 9 /* absoluteSpec */
            ifeq 17
        15: .line 82
            aload 0 /* this */
            aload 2 /* spec */
            invokevirtual sun.net.www.protocol.jar.Handler.parseAbsoluteSpec:(Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* file */
        16: .line 83
            goto 25
      StackMap locals:
      StackMap stack:
        17: iload 8 /* refOnly */
            ifne 25
        18: .line 84
            aload 0 /* this */
            aload 1 /* url */
            aload 2 /* spec */
            invokevirtual sun.net.www.protocol.jar.Handler.parseContextSpec:(Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
            astore 5 /* file */
        19: .line 87
            aload 0 /* this */
            aload 5 /* file */
            invokevirtual sun.net.www.protocol.jar.Handler.indexOfBangSlash:(Ljava/lang/String;)I
            istore 10 /* bangSlash */
        start local 10 // int bangSlash
        20: .line 88
            aload 5 /* file */
            iconst_0
            iload 10 /* bangSlash */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 11 /* toBangSlash */
        start local 11 // java.lang.String toBangSlash
        21: .line 89
            aload 5 /* file */
            iload 10 /* bangSlash */
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 12 /* afterBangSlash */
        start local 12 // java.lang.String afterBangSlash
        22: .line 90
            new sun.net.www.ParseUtil
            dup
            invokespecial sun.net.www.ParseUtil.<init>:()V
            astore 13 /* canonizer */
        start local 13 // sun.net.www.ParseUtil canonizer
        23: .line 91
            aload 13 /* canonizer */
            aload 12 /* afterBangSlash */
            invokevirtual sun.net.www.ParseUtil.canonizeString:(Ljava/lang/String;)Ljava/lang/String;
            astore 12 /* afterBangSlash */
        24: .line 92
            new java.lang.StringBuilder
            dup
            aload 11 /* toBangSlash */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 12 /* afterBangSlash */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* file */
        end local 13 // sun.net.www.ParseUtil canonizer
        end local 12 // java.lang.String afterBangSlash
        end local 11 // java.lang.String toBangSlash
        end local 10 // int bangSlash
        25: .line 94
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* url */
            ldc "jar"
            ldc ""
            iconst_m1
            aload 5 /* file */
            aload 6 /* ref */
            invokevirtual sun.net.www.protocol.jar.Handler.setURL:(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
        26: .line 95
            return
        end local 9 // boolean absoluteSpec
        end local 8 // boolean refOnly
        end local 7 // int refPos
        end local 6 // java.lang.String ref
        end local 5 // java.lang.String file
        end local 4 // int limit
        end local 3 // int start
        end local 2 // java.lang.String spec
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   27     0            this  Lsun/net/www/protocol/jar/Handler;
            0   27     1             url  Ljava/net/URL;
            0   27     2            spec  Ljava/lang/String;
            0   27     3           start  I
            0   27     4           limit  I
            1   27     5            file  Ljava/lang/String;
            2   27     6             ref  Ljava/lang/String;
            3   27     7          refPos  I
            6   27     8         refOnly  Z
           11   27     9    absoluteSpec  Z
           20   25    10       bangSlash  I
           21   25    11     toBangSlash  Ljava/lang/String;
           22   25    12  afterBangSlash  Ljava/lang/String;
           23   25    13       canonizer  Lsun/net/www/ParseUtil;
    MethodParameters:
       Name  Flags
      url    
      spec   
      start  
      limit  

  private java.lang.String parseAbsoluteSpec(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // sun.net.www.protocol.jar.Handler this
        start local 1 // java.lang.String spec
         0: .line 99
            iconst_m1
            istore 2 /* index */
        start local 2 // int index
         1: .line 101
            aload 0 /* this */
            aload 1 /* spec */
            invokevirtual sun.net.www.protocol.jar.Handler.indexOfBangSlash:(Ljava/lang/String;)I
            dup
            istore 2 /* index */
            iconst_m1
            if_icmpne 3
         2: .line 102
            new java.lang.NullPointerException
            dup
            ldc "no !/ in spec"
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         3: .line 106
      StackMap locals: int
      StackMap stack:
            aload 1 /* spec */
            iconst_0
            iload 2 /* index */
            iconst_1
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* innerSpec */
        start local 3 // java.lang.String innerSpec
         4: .line 107
            new java.net.URL
            dup
            aload 3 /* innerSpec */
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            pop
        end local 3 // java.lang.String innerSpec
         5: .line 108
            goto 10
      StackMap locals:
      StackMap stack: java.net.MalformedURLException
         6: astore 3 /* e */
        start local 3 // java.net.MalformedURLException e
         7: .line 109
            new java.lang.NullPointerException
            dup
            new java.lang.StringBuilder
            dup
            ldc "invalid url: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         8: .line 110
            aload 1 /* spec */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " ("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 3 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 109
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.net.MalformedURLException e
        10: .line 112
      StackMap locals:
      StackMap stack:
            aload 1 /* spec */
            areturn
        end local 2 // int index
        end local 1 // java.lang.String spec
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lsun/net/www/protocol/jar/Handler;
            0   11     1       spec  Ljava/lang/String;
            1   11     2      index  I
            4    5     3  innerSpec  Ljava/lang/String;
            7   10     3          e  Ljava/net/MalformedURLException;
      Exception table:
        from    to  target  type
           3     5       6  Class java.net.MalformedURLException
    MethodParameters:
      Name  Flags
      spec  

  private java.lang.String parseContextSpec(java.net.URL, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.net.www.protocol.jar.Handler this
        start local 1 // java.net.URL url
        start local 2 // java.lang.String spec
         0: .line 116
            aload 1 /* url */
            invokevirtual java.net.URL.getFile:()Ljava/lang/String;
            astore 3 /* ctxFile */
        start local 3 // java.lang.String ctxFile
         1: .line 118
            aload 2 /* spec */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 9
         2: .line 119
            aload 0 /* this */
            aload 3 /* ctxFile */
            invokevirtual sun.net.www.protocol.jar.Handler.indexOfBangSlash:(Ljava/lang/String;)I
            istore 4 /* bangSlash */
        start local 4 // int bangSlash
         3: .line 120
            iload 4 /* bangSlash */
            iconst_m1
            if_icmpne 8
         4: .line 121
            new java.lang.NullPointerException
            dup
            new java.lang.StringBuilder
            dup
            ldc "malformed context url:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         5: .line 123
            aload 1 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
         6: .line 124
            ldc ": no !/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         7: .line 121
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 126
      StackMap locals: java.lang.String int
      StackMap stack:
            aload 3 /* ctxFile */
            iconst_0
            iload 4 /* bangSlash */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* ctxFile */
        end local 4 // int bangSlash
         9: .line 128
      StackMap locals:
      StackMap stack:
            aload 3 /* ctxFile */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 16
            aload 2 /* spec */
            ldc "/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 16
        10: .line 130
            aload 3 /* ctxFile */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 4 /* lastSlash */
        start local 4 // int lastSlash
        11: .line 131
            iload 4 /* lastSlash */
            iconst_m1
            if_icmpne 15
        12: .line 132
            new java.lang.NullPointerException
            dup
            new java.lang.StringBuilder
            dup
            ldc "malformed context url:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        13: .line 134
            aload 1 /* url */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        14: .line 132
            invokespecial java.lang.NullPointerException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 136
      StackMap locals: int
      StackMap stack:
            aload 3 /* ctxFile */
            iconst_0
            iload 4 /* lastSlash */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 3 /* ctxFile */
        end local 4 // int lastSlash
        16: .line 138
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            aload 3 /* ctxFile */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* spec */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 3 // java.lang.String ctxFile
        end local 2 // java.lang.String spec
        end local 1 // java.net.URL url
        end local 0 // sun.net.www.protocol.jar.Handler this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   17     0       this  Lsun/net/www/protocol/jar/Handler;
            0   17     1        url  Ljava/net/URL;
            0   17     2       spec  Ljava/lang/String;
            1   17     3    ctxFile  Ljava/lang/String;
            3    9     4  bangSlash  I
           11   16     4  lastSlash  I
    MethodParameters:
      Name  Flags
      url   
      spec  
}
SourceFile: "Handler.java"