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

  protected java.net.JarURLConnection _jarConnection;
    descriptor: Ljava/net/JarURLConnection;
    flags: (0x0004) ACC_PROTECTED

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

  protected void <init>(java.net.URL);
    descriptor: (Ljava/net/URL;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
        start local 1 // java.net.URL url
         0: .line 47
            aload 0 /* this */
            aload 1 /* url */
            aconst_null
            invokespecial org.eclipse.jetty.util.resource.URLResource.<init>:(Ljava/net/URL;Ljava/net/URLConnection;)V
         1: .line 48
            return
        end local 1 // java.net.URL url
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
            0    2     1   url  Ljava/net/URL;
    MethodParameters:
      Name  Flags
      url   

  protected void <init>(java.net.URL, boolean);
    descriptor: (Ljava/net/URL;Z)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
        start local 1 // java.net.URL url
        start local 2 // boolean useCaches
         0: .line 52
            aload 0 /* this */
            aload 1 /* url */
            aconst_null
            iload 2 /* useCaches */
            invokespecial org.eclipse.jetty.util.resource.URLResource.<init>:(Ljava/net/URL;Ljava/net/URLConnection;Z)V
         1: .line 53
            return
        end local 2 // boolean useCaches
        end local 1 // java.net.URL url
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/eclipse/jetty/util/resource/JarResource;
            0    2     1        url  Ljava/net/URL;
            0    2     2  useCaches  Z
    MethodParameters:
           Name  Flags
      url        
      useCaches  

  public synchronized void close();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 58
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
         1: .line 59
            aload 0 /* this */
            invokespecial org.eclipse.jetty.util.resource.URLResource.close:()V
         2: .line 60
            return
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jetty/util/resource/JarResource;

  protected synchronized boolean checkConnection();
    descriptor: ()Z
    flags: (0x0024) ACC_PROTECTED, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 65
            aload 0 /* this */
            invokespecial org.eclipse.jetty.util.resource.URLResource.checkConnection:()Z
            pop
         1: .line 68
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._connection:Ljava/net/URLConnection;
            if_acmpeq 7
         2: .line 69
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.newConnection:()V
         3: .line 70
            goto 7
         4: .line 71
      StackMap locals:
      StackMap stack: java.io.IOException
            astore 1 /* e */
        start local 1 // java.io.IOException e
         5: .line 73
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            aload 1 /* e */
            invokeinterface org.eclipse.jetty.util.log.Logger.ignore:(Ljava/lang/Throwable;)V
         6: .line 74
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
        end local 1 // java.io.IOException e
         7: .line 77
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
            ifnull 8
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
            5    7     1     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           1     3       4  Class java.io.IOException

  protected void newConnection();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 85
            aload 0 /* this */
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._connection:Ljava/net/URLConnection;
            checkcast java.net.JarURLConnection
            putfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
         1: .line 86
            return
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
    Exceptions:
      throws java.io.IOException

  public boolean exists();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 94
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._urlString:Ljava/lang/String;
            ldc "!/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 2
         1: .line 95
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.checkConnection:()Z
            ireturn
         2: .line 97
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokespecial org.eclipse.jetty.util.resource.URLResource.exists:()Z
            ireturn
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/eclipse/jetty/util/resource/JarResource;

  public java.io.File getFile();
    descriptor: ()Ljava/io/File;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 104
            aconst_null
            areturn
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
    Exceptions:
      throws java.io.IOException

  public java.io.InputStream getInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=3, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 111
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.checkConnection:()Z
            pop
         1: .line 112
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._urlString:Ljava/lang/String;
            ldc "!/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifne 3
         2: .line 113
            new org.eclipse.jetty.util.resource.JarResource$1
            dup
            aload 0 /* this */
            aload 0 /* this */
            iconst_0
            invokevirtual org.eclipse.jetty.util.resource.JarResource.getInputStream:(Z)Ljava/io/InputStream;
            invokespecial org.eclipse.jetty.util.resource.JarResource$1.<init>:(Lorg/eclipse/jetty/util/resource/JarResource;Ljava/io/InputStream;)V
            areturn
         3: .line 122
      StackMap locals:
      StackMap stack:
            new java.net.URL
            dup
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._urlString:Ljava/lang/String;
            iconst_4
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._urlString:Ljava/lang/String;
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 1 /* url */
        start local 1 // java.net.URL url
         4: .line 123
            aload 1 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 2 /* is */
        start local 2 // java.io.InputStream is
         5: .line 124
            aload 2 /* is */
            areturn
        end local 2 // java.io.InputStream is
        end local 1 // java.net.URL url
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
            4    6     1   url  Ljava/net/URL;
            5    6     2    is  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException

  public void copyTo(java.io.File);
    descriptor: (Ljava/io/File;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=22, args_size=2
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
        start local 1 // java.io.File directory
         0: .line 131
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.exists:()Z
            ifne 2
         1: .line 132
            return
         2: .line 134
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            invokeinterface org.eclipse.jetty.util.log.Logger.isDebugEnabled:()Z
            ifeq 4
         3: .line 135
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Extract "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " to "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* directory */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.getURI:()Ljava/net/URI;
            invokevirtual java.net.URI.toASCIIString:()Ljava/lang/String;
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            astore 2 /* urlString */
        start local 2 // java.lang.String urlString
         5: .line 138
            aload 2 /* urlString */
            ldc "!/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 3 /* endOfJarUrl */
        start local 3 // int endOfJarUrl
         6: .line 139
            iload 3 /* endOfJarUrl */
            iflt 7
            iconst_4
            goto 8
      StackMap locals: java.lang.String int
      StackMap stack:
         7: iconst_0
      StackMap locals:
      StackMap stack: int
         8: istore 4 /* startOfJarUrl */
        start local 4 // int startOfJarUrl
         9: .line 141
            iload 3 /* endOfJarUrl */
            ifge 11
        10: .line 142
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Not a valid jar url: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* urlString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            athrow
        11: .line 144
      StackMap locals: int
      StackMap stack:
            new java.net.URL
            dup
            aload 2 /* urlString */
            iload 4 /* startOfJarUrl */
            iload 3 /* endOfJarUrl */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
            astore 5 /* jarFileURL */
        start local 5 // java.net.URL jarFileURL
        12: .line 145
            iload 3 /* endOfJarUrl */
            iconst_2
            iadd
            aload 2 /* urlString */
            invokevirtual java.lang.String.length:()I
            if_icmpge 13
            aload 2 /* urlString */
            iload 3 /* endOfJarUrl */
            iconst_2
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            goto 14
      StackMap locals: java.net.URL
      StackMap stack:
        13: aconst_null
      StackMap locals:
      StackMap stack: java.lang.String
        14: astore 6 /* subEntryName */
        start local 6 // java.lang.String subEntryName
        15: .line 146
            aload 6 /* subEntryName */
            ifnull 16
            aload 6 /* subEntryName */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 16
            iconst_1
            goto 17
      StackMap locals: java.lang.String
      StackMap stack:
        16: iconst_0
      StackMap locals:
      StackMap stack: int
        17: istore 7 /* subEntryIsDir */
        start local 7 // boolean subEntryIsDir
        18: .line 148
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            invokeinterface org.eclipse.jetty.util.log.Logger.isDebugEnabled:()Z
            ifeq 20
        19: .line 149
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Extracting entry = "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 6 /* subEntryName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc " from jar "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 5 /* jarFileURL */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        20: .line 150
      StackMap locals: int
      StackMap stack:
            aload 5 /* jarFileURL */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            astore 8 /* c */
        start local 8 // java.net.URLConnection c
        21: .line 151
            aload 8 /* c */
            iconst_0
            invokevirtual java.net.URLConnection.setUseCaches:(Z)V
        22: .line 152
            aconst_null
            astore 9
            aconst_null
            astore 10
        23: aload 8 /* c */
            invokevirtual java.net.URLConnection.getInputStream:()Ljava/io/InputStream;
            astore 11 /* is */
        start local 11 // java.io.InputStream is
        24: .line 153
            new java.util.jar.JarInputStream
            dup
            aload 11 /* is */
            invokespecial java.util.jar.JarInputStream.<init>:(Ljava/io/InputStream;)V
            astore 12 /* jin */
        start local 12 // java.util.jar.JarInputStream jin
        25: .line 157
            goto 72
        start local 13 // java.util.jar.JarEntry entry
        26: .line 159
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream java.util.jar.JarEntry
      StackMap stack:
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            astore 15 /* entryName */
        start local 15 // java.lang.String entryName
        27: .line 160
            aload 6 /* subEntryName */
            ifnull 39
            aload 15 /* entryName */
            aload 6 /* subEntryName */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 39
        28: .line 163
            iload 7 /* subEntryIsDir */
            ifne 30
            aload 6 /* subEntryName */
            invokevirtual java.lang.String.length:()I
            iconst_1
            iadd
            aload 15 /* entryName */
            invokevirtual java.lang.String.length:()I
            if_icmpne 30
            aload 15 /* entryName */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 30
        29: .line 164
            iconst_1
            istore 7 /* subEntryIsDir */
        30: .line 168
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream java.util.jar.JarEntry top java.lang.String
      StackMap stack:
            iload 7 /* subEntryIsDir */
            ifeq 37
        31: .line 174
            aload 15 /* entryName */
            aload 6 /* subEntryName */
            invokevirtual java.lang.String.length:()I
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 15 /* entryName */
        32: .line 175
            aload 15 /* entryName */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 35
        33: .line 178
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        34: .line 179
            goto 43
        end local 14 // boolean shouldExtract
        35: .line 181
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        36: .line 182
            goto 43
        end local 14 // boolean shouldExtract
        37: .line 184
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        38: .line 185
            goto 43
        end local 14 // boolean shouldExtract
        39: .line 186
      StackMap locals:
      StackMap stack:
            aload 6 /* subEntryName */
            ifnull 42
            aload 15 /* entryName */
            aload 6 /* subEntryName */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 42
        40: .line 190
            iconst_0
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        41: .line 191
            goto 43
        end local 14 // boolean shouldExtract
        42: .line 195
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        43: .line 198
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream java.util.jar.JarEntry int java.lang.String
      StackMap stack:
            iload 14 /* shouldExtract */
            ifne 47
        44: .line 200
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            invokeinterface org.eclipse.jetty.util.log.Logger.isDebugEnabled:()Z
            ifeq 72
        45: .line 201
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Skipping entry: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 15 /* entryName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        46: .line 202
            goto 72
        47: .line 205
      StackMap locals:
      StackMap stack:
            aload 15 /* entryName */
            bipush 92
            bipush 47
            invokestatic org.eclipse.jetty.util.StringUtil.replace:(Ljava/lang/String;CC)Ljava/lang/String;
            astore 16 /* dotCheck */
        start local 16 // java.lang.String dotCheck
        48: .line 206
            aload 16 /* dotCheck */
            invokestatic org.eclipse.jetty.util.URIUtil.canonicalPath:(Ljava/lang/String;)Ljava/lang/String;
            astore 16 /* dotCheck */
        49: .line 207
            aload 16 /* dotCheck */
            ifnonnull 53
        50: .line 209
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            invokeinterface org.eclipse.jetty.util.log.Logger.isDebugEnabled:()Z
            ifeq 72
        51: .line 210
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/eclipse/jetty/util/log/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Invalid entry: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 15 /* entryName */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
            invokeinterface org.eclipse.jetty.util.log.Logger.debug:(Ljava/lang/String;[Ljava/lang/Object;)V
        52: .line 211
            goto 72
        53: .line 214
      StackMap locals: java.lang.String
      StackMap stack:
            new java.io.File
            dup
            aload 1 /* directory */
            aload 15 /* entryName */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 17 /* file */
        start local 17 // java.io.File file
        54: .line 216
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.isDirectory:()Z
            ifeq 58
        55: .line 219
            aload 17 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 72
        56: .line 220
            aload 17 /* file */
            invokevirtual java.io.File.mkdirs:()Z
            pop
        57: .line 221
            goto 72
        58: .line 225
      StackMap locals: java.io.File
      StackMap stack:
            new java.io.File
            dup
            aload 17 /* file */
            invokevirtual java.io.File.getParent:()Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 18 /* dir */
        start local 18 // java.io.File dir
        59: .line 226
            aload 18 /* dir */
            invokevirtual java.io.File.exists:()Z
            ifne 61
        60: .line 227
            aload 18 /* dir */
            invokevirtual java.io.File.mkdirs:()Z
            pop
        61: .line 230
      StackMap locals: java.io.File
      StackMap stack:
            aconst_null
            astore 19
            aconst_null
            astore 20
        62: new java.io.FileOutputStream
            dup
            aload 17 /* file */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 21 /* fout */
        start local 21 // java.io.OutputStream fout
        63: .line 232
            aload 12 /* jin */
            aload 21 /* fout */
            invokestatic org.eclipse.jetty.util.IO.copy:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        64: .line 233
            aload 21 /* fout */
            ifnull 70
            aload 21 /* fout */
            invokevirtual java.io.OutputStream.close:()V
            goto 70
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream java.util.jar.JarEntry int java.lang.String java.lang.String java.io.File java.io.File java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
        65: astore 19
            aload 21 /* fout */
            ifnull 66
            aload 21 /* fout */
            invokevirtual java.io.OutputStream.close:()V
        end local 21 // java.io.OutputStream fout
      StackMap locals:
      StackMap stack:
        66: aload 19
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        67: astore 20
            aload 19
            ifnonnull 68
            aload 20
            astore 19
            goto 69
      StackMap locals:
      StackMap stack:
        68: aload 19
            aload 20
            if_acmpeq 69
            aload 19
            aload 20
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        69: aload 19
            athrow
        70: .line 236
      StackMap locals:
      StackMap stack:
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.getTime:()J
            lconst_0
            lcmp
            iflt 72
        71: .line 237
            aload 17 /* file */
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.getTime:()J
            invokevirtual java.io.File.setLastModified:(J)Z
            pop
        end local 18 // java.io.File dir
        end local 17 // java.io.File file
        end local 16 // java.lang.String dotCheck
        end local 15 // java.lang.String entryName
        end local 14 // boolean shouldExtract
        end local 13 // java.util.jar.JarEntry entry
        72: .line 157
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream
      StackMap stack:
            aload 12 /* jin */
            invokevirtual java.util.jar.JarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            dup
            astore 13 /* entry */
        start local 13 // java.util.jar.JarEntry entry
        73: ifnonnull 26
        74: .line 241
            aload 6 /* subEntryName */
            ifnull 75
            aload 6 /* subEntryName */
            ifnull 89
            aload 6 /* subEntryName */
            ldc "META-INF/MANIFEST.MF"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 89
        75: .line 243
      StackMap locals: java.util.jar.JarEntry
      StackMap stack:
            aload 12 /* jin */
            invokevirtual java.util.jar.JarInputStream.getManifest:()Ljava/util/jar/Manifest;
            astore 15 /* manifest */
        start local 15 // java.util.jar.Manifest manifest
        76: .line 244
            aload 15 /* manifest */
            ifnull 89
        77: .line 246
            new java.io.File
            dup
            aload 1 /* directory */
            ldc "META-INF"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 16 /* metaInf */
        start local 16 // java.io.File metaInf
        78: .line 247
            aload 16 /* metaInf */
            invokevirtual java.io.File.mkdir:()Z
            pop
        79: .line 248
            new java.io.File
            dup
            aload 16 /* metaInf */
            ldc "MANIFEST.MF"
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 17 /* f */
        start local 17 // java.io.File f
        80: .line 249
            aconst_null
            astore 18
            aconst_null
            astore 19
        81: new java.io.FileOutputStream
            dup
            aload 17 /* f */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            astore 20 /* fout */
        start local 20 // java.io.OutputStream fout
        82: .line 251
            aload 15 /* manifest */
            aload 20 /* fout */
            invokevirtual java.util.jar.Manifest.write:(Ljava/io/OutputStream;)V
        83: .line 252
            aload 20 /* fout */
            ifnull 89
            aload 20 /* fout */
            invokevirtual java.io.OutputStream.close:()V
            goto 89
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream java.util.jar.JarEntry top java.util.jar.Manifest java.io.File java.io.File java.lang.Throwable java.lang.Throwable java.io.OutputStream
      StackMap stack: java.lang.Throwable
        84: astore 18
            aload 20 /* fout */
            ifnull 85
            aload 20 /* fout */
            invokevirtual java.io.OutputStream.close:()V
        end local 20 // java.io.OutputStream fout
      StackMap locals:
      StackMap stack:
        85: aload 18
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        86: astore 19
            aload 18
            ifnonnull 87
            aload 19
            astore 18
            goto 88
      StackMap locals:
      StackMap stack:
        87: aload 18
            aload 19
            if_acmpeq 88
            aload 18
            aload 19
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        88: aload 18
            athrow
        end local 17 // java.io.File f
        end local 16 // java.io.File metaInf
        end local 15 // java.util.jar.Manifest manifest
        end local 13 // java.util.jar.JarEntry entry
        89: .line 255
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.io.File java.lang.String int int java.net.URL java.lang.String int java.net.URLConnection java.lang.Throwable java.lang.Throwable java.io.InputStream java.util.jar.JarInputStream
      StackMap stack:
            aload 12 /* jin */
            ifnull 92
            aload 12 /* jin */
            invokevirtual java.util.jar.JarInputStream.close:()V
            goto 92
      StackMap locals:
      StackMap stack: java.lang.Throwable
        90: astore 9
            aload 12 /* jin */
            ifnull 91
            aload 12 /* jin */
            invokevirtual java.util.jar.JarInputStream.close:()V
        end local 12 // java.util.jar.JarInputStream jin
      StackMap locals:
      StackMap stack:
        91: aload 9
            athrow
      StackMap locals:
      StackMap stack:
        92: aload 11 /* is */
            ifnull 100
            aload 11 /* is */
            invokevirtual java.io.InputStream.close:()V
            goto 100
      StackMap locals:
      StackMap stack: java.lang.Throwable
        93: astore 10
            aload 9
            ifnonnull 94
            aload 10
            astore 9
            goto 95
      StackMap locals:
      StackMap stack:
        94: aload 9
            aload 10
            if_acmpeq 95
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        95: aload 11 /* is */
            ifnull 96
            aload 11 /* is */
            invokevirtual java.io.InputStream.close:()V
        end local 11 // java.io.InputStream is
      StackMap locals:
      StackMap stack:
        96: aload 9
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        97: astore 10
            aload 9
            ifnonnull 98
            aload 10
            astore 9
            goto 99
      StackMap locals:
      StackMap stack:
        98: aload 9
            aload 10
            if_acmpeq 99
            aload 9
            aload 10
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        99: aload 9
            athrow
       100: .line 256
      StackMap locals:
      StackMap stack:
            return
        end local 8 // java.net.URLConnection c
        end local 7 // boolean subEntryIsDir
        end local 6 // java.lang.String subEntryName
        end local 5 // java.net.URL jarFileURL
        end local 4 // int startOfJarUrl
        end local 3 // int endOfJarUrl
        end local 2 // java.lang.String urlString
        end local 1 // java.io.File directory
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0  101     0           this  Lorg/eclipse/jetty/util/resource/JarResource;
            0  101     1      directory  Ljava/io/File;
            5  101     2      urlString  Ljava/lang/String;
            6  101     3    endOfJarUrl  I
            9  101     4  startOfJarUrl  I
           12  101     5     jarFileURL  Ljava/net/URL;
           15  101     6   subEntryName  Ljava/lang/String;
           18  101     7  subEntryIsDir  Z
           21  101     8              c  Ljava/net/URLConnection;
           24   96    11             is  Ljava/io/InputStream;
           25   91    12            jin  Ljava/util/jar/JarInputStream;
           26   72    13          entry  Ljava/util/jar/JarEntry;
           73   89    13          entry  Ljava/util/jar/JarEntry;
           34   35    14  shouldExtract  Z
           36   37    14  shouldExtract  Z
           38   39    14  shouldExtract  Z
           41   42    14  shouldExtract  Z
           43   72    14  shouldExtract  Z
           27   72    15      entryName  Ljava/lang/String;
           48   72    16       dotCheck  Ljava/lang/String;
           54   72    17           file  Ljava/io/File;
           59   72    18            dir  Ljava/io/File;
           63   66    21           fout  Ljava/io/OutputStream;
           76   89    15       manifest  Ljava/util/jar/Manifest;
           78   89    16        metaInf  Ljava/io/File;
           80   89    17              f  Ljava/io/File;
           82   85    20           fout  Ljava/io/OutputStream;
      Exception table:
        from    to  target  type
          63    64      65  any
          62    67      67  any
          82    83      84  any
          81    86      86  any
          25    89      90  any
          24    92      93  any
          23    97      97  any
    Exceptions:
      throws java.io.IOException
    MethodParameters:
           Name  Flags
      directory  

  public static org.eclipse.jetty.util.resource.Resource newJarResource(org.eclipse.jetty.util.resource.Resource);
    descriptor: (Lorg/eclipse/jetty/util/resource/Resource;)Lorg/eclipse/jetty/util/resource/Resource;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.Resource resource
         0: .line 260
            aload 0 /* resource */
            instanceof org.eclipse.jetty.util.resource.JarResource
            ifeq 2
         1: .line 261
            aload 0 /* resource */
            areturn
         2: .line 262
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "jar:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* resource */
            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;
            invokestatic org.eclipse.jetty.util.resource.Resource.newResource:(Ljava/lang/String;)Lorg/eclipse/jetty/util/resource/Resource;
            areturn
        end local 0 // org.eclipse.jetty.util.resource.Resource resource
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0  resource  Lorg/eclipse/jetty/util/resource/Resource;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      resource  
}
SourceFile: "JarResource.java"
NestMembers:
  org.eclipse.jetty.util.resource.JarResource$1
InnerClasses:
  org.eclipse.jetty.util.resource.JarResource$1