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.slf4j.Logger LOG;
    descriptor: Lorg/slf4j/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 43
            ldc Lorg/eclipse/jetty/util/resource/JarResource;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/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 49
            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 50
            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 54
            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 55
            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 void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 60
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._lock:Lorg/eclipse/jetty/util/thread/AutoLock;
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.lock:()Lorg/eclipse/jetty/util/thread/AutoLock;
            astore 3 /* l */
        start local 3 // org.eclipse.jetty.util.thread.AutoLock l
         2: .line 62
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
         3: .line 63
            aload 0 /* this */
            invokespecial org.eclipse.jetty.util.resource.URLResource.close:()V
         4: .line 64
            aload 3 /* l */
            ifnull 10
            aload 3 /* l */
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.close:()V
            goto 10
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.AutoLock
      StackMap stack: java.lang.Throwable
         5: astore 1
            aload 3 /* l */
            ifnull 6
            aload 3 /* l */
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.close:()V
        end local 3 // org.eclipse.jetty.util.thread.AutoLock l
      StackMap locals:
      StackMap stack:
         6: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
         7: astore 2
            aload 1
            ifnonnull 8
            aload 2
            astore 1
            goto 9
      StackMap locals:
      StackMap stack:
         8: aload 1
            aload 2
            if_acmpeq 9
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
         9: aload 1
            athrow
        10: .line 65
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
            2    6     3     l  Lorg/eclipse/jetty/util/thread/AutoLock;
      Exception table:
        from    to  target  type
           2     4       5  any
           1     7       7  any

  protected boolean checkConnection();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // org.eclipse.jetty.util.resource.JarResource this
         0: .line 70
            aconst_null
            astore 1
            aconst_null
            astore 2
         1: aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._lock:Lorg/eclipse/jetty/util/thread/AutoLock;
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.lock:()Lorg/eclipse/jetty/util/thread/AutoLock;
            astore 3 /* l */
        start local 3 // org.eclipse.jetty.util.thread.AutoLock l
         2: .line 72
            aload 0 /* this */
            invokespecial org.eclipse.jetty.util.resource.URLResource.checkConnection:()Z
            pop
         3: .line 75
            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 9
         4: .line 76
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.newConnection:()V
         5: .line 77
            goto 9
         6: .line 78
      StackMap locals: org.eclipse.jetty.util.resource.JarResource java.lang.Throwable java.lang.Throwable org.eclipse.jetty.util.thread.AutoLock
      StackMap stack: java.io.IOException
            astore 4 /* e */
        start local 4 // java.io.IOException e
         7: .line 80
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            ldc "IGNORED"
            aload 4 /* e */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Throwable;)V
         8: .line 81
            aload 0 /* this */
            aconst_null
            putfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
        end local 4 // java.io.IOException e
         9: .line 84
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.eclipse.jetty.util.resource.JarResource._jarConnection:Ljava/net/JarURLConnection;
            ifnull 10
            iconst_1
            goto 11
      StackMap locals:
      StackMap stack:
        10: iconst_0
        11: .line 85
      StackMap locals:
      StackMap stack: int
            aload 3 /* l */
            ifnull 12
            aload 3 /* l */
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.close:()V
        12: .line 84
      StackMap locals:
      StackMap stack: int
            ireturn
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 1
        14: .line 85
            aload 3 /* l */
            ifnull 15
            aload 3 /* l */
            invokevirtual org.eclipse.jetty.util.thread.AutoLock.close:()V
        end local 3 // org.eclipse.jetty.util.thread.AutoLock l
      StackMap locals:
      StackMap stack:
        15: aload 1
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        16: astore 2
            aload 1
            ifnonnull 17
            aload 2
            astore 1
            goto 18
      StackMap locals:
      StackMap stack:
        17: aload 1
            aload 2
            if_acmpeq 18
            aload 1
            aload 2
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        18: aload 1
            athrow
        end local 0 // org.eclipse.jetty.util.resource.JarResource this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   19     0  this  Lorg/eclipse/jetty/util/resource/JarResource;
            2   15     3     l  Lorg/eclipse/jetty/util/thread/AutoLock;
            7    9     4     e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           3     5       6  Class java.io.IOException
           2    11      13  any
           1    12      16  any
          13    16      16  any

  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 93
            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 94
            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 102
            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 103
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.checkConnection:()Z
            ireturn
         2: .line 105
      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 112
            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 119
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.checkConnection:()Z
            pop
         1: .line 120
            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 121
            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 130
      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 131
            aload 1 /* url */
            invokevirtual java.net.URL.openStream:()Ljava/io/InputStream;
            astore 2 /* is */
        start local 2 // java.io.InputStream is
         5: .line 132
            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 139
            aload 0 /* this */
            invokevirtual org.eclipse.jetty.util.resource.JarResource.exists:()Z
            ifne 2
         1: .line 140
            return
         2: .line 142
      StackMap locals:
      StackMap stack:
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 4
         3: .line 143
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            ldc "Extract {} to {}"
            aload 0 /* this */
            aload 1 /* directory */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         4: .line 145
      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 146
            aload 2 /* urlString */
            ldc "!/"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 3 /* endOfJarUrl */
        start local 3 // int endOfJarUrl
         6: .line 147
            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 149
            iload 3 /* endOfJarUrl */
            ifge 11
        10: .line 150
            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 152
      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 153
            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 154
            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 156
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 20
        19: .line 157
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            ldc "Extracting entry = {} from jar {}"
            aload 6 /* subEntryName */
            aload 5 /* jarFileURL */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
        20: .line 158
      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 159
            aload 8 /* c */
            iconst_0
            invokevirtual java.net.URLConnection.setUseCaches:(Z)V
        22: .line 160
            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 161
            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 165
            goto 72
        start local 13 // java.util.jar.JarEntry entry
        26: .line 167
      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 168
            aload 6 /* subEntryName */
            ifnull 39
            aload 15 /* entryName */
            aload 6 /* subEntryName */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 39
        28: .line 171
            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 172
            iconst_1
            istore 7 /* subEntryIsDir */
        30: .line 176
      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 182
            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 183
            aload 15 /* entryName */
            ldc ""
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 35
        33: .line 186
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        34: .line 187
            goto 43
        end local 14 // boolean shouldExtract
        35: .line 189
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        36: .line 190
            goto 43
        end local 14 // boolean shouldExtract
        37: .line 192
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        38: .line 193
            goto 43
        end local 14 // boolean shouldExtract
        39: .line 194
      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 198
            iconst_0
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        41: .line 199
            goto 43
        end local 14 // boolean shouldExtract
        42: .line 203
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 14 /* shouldExtract */
        start local 14 // boolean shouldExtract
        43: .line 206
      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 208
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 72
        45: .line 209
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            ldc "Skipping entry: {}"
            aload 15 /* entryName */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
        46: .line 210
            goto 72
        47: .line 213
      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 214
            aload 16 /* dotCheck */
            invokestatic org.eclipse.jetty.util.URIUtil.canonicalPath:(Ljava/lang/String;)Ljava/lang/String;
            astore 16 /* dotCheck */
        49: .line 215
            aload 16 /* dotCheck */
            ifnonnull 53
        50: .line 217
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            invokeinterface org.slf4j.Logger.isDebugEnabled:()Z
            ifeq 72
        51: .line 218
            getstatic org.eclipse.jetty.util.resource.JarResource.LOG:Lorg/slf4j/Logger;
            ldc "Invalid entry: {}"
            aload 15 /* entryName */
            invokeinterface org.slf4j.Logger.debug:(Ljava/lang/String;Ljava/lang/Object;)V
        52: .line 219
            goto 72
        53: .line 222
      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 224
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.isDirectory:()Z
            ifeq 58
        55: .line 227
            aload 17 /* file */
            invokevirtual java.io.File.exists:()Z
            ifne 72
        56: .line 228
            aload 17 /* file */
            invokevirtual java.io.File.mkdirs:()Z
            pop
        57: .line 229
            goto 72
        58: .line 233
      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 234
            aload 18 /* dir */
            invokevirtual java.io.File.exists:()Z
            ifne 61
        60: .line 235
            aload 18 /* dir */
            invokevirtual java.io.File.mkdirs:()Z
            pop
        61: .line 238
      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 240
            aload 12 /* jin */
            aload 21 /* fout */
            invokestatic org.eclipse.jetty.util.IO.copy:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
        64: .line 241
            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 244
      StackMap locals:
      StackMap stack:
            aload 13 /* entry */
            invokevirtual java.util.jar.JarEntry.getTime:()J
            lconst_0
            lcmp
            iflt 72
        71: .line 245
            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 165
      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 249
            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 251
      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 252
            aload 15 /* manifest */
            ifnull 89
        77: .line 254
            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 255
            aload 16 /* metaInf */
            invokevirtual java.io.File.mkdir:()Z
            pop
        79: .line 256
            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 257
            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 259
            aload 15 /* manifest */
            aload 20 /* fout */
            invokevirtual java.util.jar.Manifest.write:(Ljava/io/OutputStream;)V
        83: .line 260
            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 263
      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 264
      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 268
            aload 0 /* resource */
            instanceof org.eclipse.jetty.util.resource.JarResource
            ifeq 2
         1: .line 269
            aload 0 /* resource */
            areturn
         2: .line 270
      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