public class org.glassfish.grizzly.http.server.util.ExpandJar
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.glassfish.grizzly.http.server.util.ExpandJar
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.grizzly.http.server.util.ExpandJar this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.glassfish.grizzly.http.server.util.ExpandJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/grizzly/http/server/util/ExpandJar;

  public static java.lang.String expand(java.net.URL);
    descriptor: (Ljava/net/URL;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.net.URL jar
         0: .line 52
            aload 0 /* jar */
            ldc "java.io.tmpdir"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.expand:(Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 0 // java.net.URL jar
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0   jar  Ljava/net/URL;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      jar   

  public static java.lang.String expand(java.net.URL, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.net.URL jar
        start local 1 // java.lang.String workFolder
         0: .line 70
            aload 0 /* jar */
            invokevirtual java.net.URL.toString:()Ljava/lang/String;
            bipush 92
            bipush 47
            invokevirtual java.lang.String.replace:(CC)Ljava/lang/String;
            astore 2 /* pathname */
        start local 2 // java.lang.String pathname
         1: .line 71
            aload 2 /* pathname */
            ldc "!/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 72
            aload 2 /* pathname */
            iconst_0
            aload 2 /* pathname */
            invokevirtual java.lang.String.length:()I
            iconst_2
            isub
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* pathname */
         3: .line 74
      StackMap locals: java.lang.String
      StackMap stack:
            aload 2 /* pathname */
            bipush 46
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 3 /* period */
        start local 3 // int period
         4: .line 75
            iload 3 /* period */
            aload 2 /* pathname */
            invokevirtual java.lang.String.length:()I
            iconst_4
            isub
            if_icmplt 6
         5: .line 76
            aload 2 /* pathname */
            iconst_0
            iload 3 /* period */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* pathname */
         6: .line 78
      StackMap locals: int
      StackMap stack:
            aload 2 /* pathname */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 4 /* slash */
        start local 4 // int slash
         7: .line 79
            iload 4 /* slash */
            iflt 9
         8: .line 80
            aload 2 /* pathname */
            iload 4 /* slash */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 2 /* pathname */
         9: .line 82
      StackMap locals: int
      StackMap stack:
            aload 0 /* jar */
            aload 2 /* pathname */
            aload 1 /* workFolder */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.expand:(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            areturn
        end local 4 // int slash
        end local 3 // int period
        end local 2 // java.lang.String pathname
        end local 1 // java.lang.String workFolder
        end local 0 // java.net.URL jar
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   10     0         jar  Ljava/net/URL;
            0   10     1  workFolder  Ljava/lang/String;
            1   10     2    pathname  Ljava/lang/String;
            4   10     3      period  I
            7   10     4       slash  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
            Name  Flags
      jar         
      workFolder  

  public static java.lang.String expand(java.net.URL, java.lang.String, java.lang.String);
    descriptor: (Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=14, args_size=3
        start local 0 // java.net.URL jar
        start local 1 // java.lang.String pathname
        start local 2 // java.lang.String dirname
         0: .line 100
            new java.io.File
            dup
            aload 2 /* dirname */
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            astore 3 /* appBase */
        start local 3 // java.io.File appBase
         1: .line 101
            new java.io.File
            dup
            aload 3 /* appBase */
            aload 1 /* pathname */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* docBase */
        start local 4 // java.io.File docBase
         2: .line 103
            aload 4 /* docBase */
            invokevirtual java.io.File.mkdir:()Z
            ifne 4
         3: .line 104
            new java.lang.IllegalStateException
            dup
            ldc "Unable to create directory: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* docBase */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 108
      StackMap locals: java.io.File java.io.File
      StackMap stack:
            aload 0 /* jar */
            invokevirtual java.net.URL.openConnection:()Ljava/net/URLConnection;
            checkcast java.net.JarURLConnection
            astore 5 /* juc */
        start local 5 // java.net.JarURLConnection juc
         5: .line 109
            aload 5 /* juc */
            iconst_0
            invokevirtual java.net.JarURLConnection.setUseCaches:(Z)V
         6: .line 110
            aconst_null
            astore 6 /* jarFile */
        start local 6 // java.util.jar.JarFile jarFile
         7: .line 111
            aconst_null
            astore 7 /* input */
        start local 7 // java.io.InputStream input
         8: .line 113
            aload 5 /* juc */
            invokevirtual java.net.JarURLConnection.getJarFile:()Ljava/util/jar/JarFile;
            astore 6 /* jarFile */
         9: .line 114
            aload 6 /* jarFile */
            invokevirtual java.util.jar.JarFile.entries:()Ljava/util/Enumeration;
            astore 8 /* jarEntries */
        start local 8 // java.util.Enumeration jarEntries
        10: .line 115
            goto 24
        11: .line 116
      StackMap locals: java.net.URL java.lang.String java.lang.String java.io.File java.io.File java.net.JarURLConnection java.util.jar.JarFile java.io.InputStream java.util.Enumeration
      StackMap stack:
            aload 8 /* jarEntries */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.util.jar.JarEntry
            astore 9 /* jarEntry */
        start local 9 // java.util.jar.JarEntry jarEntry
        12: .line 117
            aload 9 /* jarEntry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            astore 10 /* name */
        start local 10 // java.lang.String name
        13: .line 118
            aload 10 /* name */
            bipush 47
            invokevirtual java.lang.String.lastIndexOf:(I)I
            istore 11 /* last */
        start local 11 // int last
        14: .line 119
            iload 11 /* last */
            iflt 18
        15: .line 120
            new java.io.File
            dup
            aload 4 /* docBase */
            aload 10 /* name */
            iconst_0
            iload 11 /* last */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 12 /* parent */
        start local 12 // java.io.File parent
        16: .line 121
            aload 12 /* parent */
            invokevirtual java.io.File.mkdirs:()Z
            ifne 18
        17: .line 122
            new java.lang.IllegalStateException
            dup
            ldc "Unable to create directory: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 12 /* parent */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 12 // java.io.File parent
        18: .line 125
      StackMap locals: java.util.jar.JarEntry java.lang.String int
      StackMap stack:
            aload 10 /* name */
            ldc "/"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 20
        19: .line 126
            goto 24
        20: .line 128
      StackMap locals:
      StackMap stack:
            aload 6 /* jarFile */
            aload 9 /* jarEntry */
            invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
            astore 7 /* input */
        21: .line 129
            aload 7 /* input */
            aload 4 /* docBase */
            aload 10 /* name */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.expand:(Ljava/io/InputStream;Ljava/io/File;Ljava/lang/String;)V
        22: .line 130
            aload 7 /* input */
            invokevirtual java.io.InputStream.close:()V
        23: .line 131
            aconst_null
            astore 7 /* input */
        end local 11 // int last
        end local 10 // java.lang.String name
        end local 9 // java.util.jar.JarEntry jarEntry
        24: .line 115
      StackMap locals:
      StackMap stack:
            aload 8 /* jarEntries */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 11
        end local 8 // java.util.Enumeration jarEntries
        25: .line 133
            goto 41
      StackMap locals: java.net.URL java.lang.String java.lang.String java.io.File java.io.File java.net.JarURLConnection java.util.jar.JarFile java.io.InputStream
      StackMap stack: java.io.IOException
        26: astore 8 /* e */
        start local 8 // java.io.IOException e
        27: .line 136
            aload 4 /* docBase */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.deleteDir:(Ljava/io/File;)Z
            pop
        28: .line 137
            aload 8 /* e */
            athrow
        end local 8 // java.io.IOException e
        29: .line 138
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 13
        30: .line 139
            aload 7 /* input */
            ifnull 35
        31: .line 141
            aload 7 /* input */
            invokevirtual java.io.InputStream.close:()V
        32: .line 142
            goto 34
      StackMap locals: java.net.URL java.lang.String java.lang.String java.io.File java.io.File java.net.JarURLConnection java.util.jar.JarFile java.io.InputStream top top top top top java.lang.Throwable
      StackMap stack: java.lang.Throwable
        33: pop
        34: .line 144
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7 /* input */
        35: .line 146
      StackMap locals:
      StackMap stack:
            aload 6 /* jarFile */
            ifnull 40
        36: .line 148
            aload 6 /* jarFile */
            invokevirtual java.util.jar.JarFile.close:()V
        37: .line 149
            goto 39
      StackMap locals:
      StackMap stack: java.lang.Throwable
        38: pop
        39: .line 151
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* jarFile */
        40: .line 153
      StackMap locals:
      StackMap stack:
            aload 13
            athrow
        41: .line 139
      StackMap locals: java.net.URL java.lang.String java.lang.String java.io.File java.io.File java.net.JarURLConnection java.util.jar.JarFile java.io.InputStream
      StackMap stack:
            aload 7 /* input */
            ifnull 46
        42: .line 141
            aload 7 /* input */
            invokevirtual java.io.InputStream.close:()V
        43: .line 142
            goto 45
      StackMap locals:
      StackMap stack: java.lang.Throwable
        44: pop
        45: .line 144
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 7 /* input */
        46: .line 146
      StackMap locals:
      StackMap stack:
            aload 6 /* jarFile */
            ifnull 51
        47: .line 148
            aload 6 /* jarFile */
            invokevirtual java.util.jar.JarFile.close:()V
        48: .line 149
            goto 50
      StackMap locals:
      StackMap stack: java.lang.Throwable
        49: pop
        50: .line 151
      StackMap locals:
      StackMap stack:
            aconst_null
            astore 6 /* jarFile */
        51: .line 156
      StackMap locals:
      StackMap stack:
            aload 4 /* docBase */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            areturn
        end local 7 // java.io.InputStream input
        end local 6 // java.util.jar.JarFile jarFile
        end local 5 // java.net.JarURLConnection juc
        end local 4 // java.io.File docBase
        end local 3 // java.io.File appBase
        end local 2 // java.lang.String dirname
        end local 1 // java.lang.String pathname
        end local 0 // java.net.URL jar
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   52     0         jar  Ljava/net/URL;
            0   52     1    pathname  Ljava/lang/String;
            0   52     2     dirname  Ljava/lang/String;
            1   52     3     appBase  Ljava/io/File;
            2   52     4     docBase  Ljava/io/File;
            5   52     5         juc  Ljava/net/JarURLConnection;
            7   52     6     jarFile  Ljava/util/jar/JarFile;
            8   52     7       input  Ljava/io/InputStream;
           10   25     8  jarEntries  Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
           12   24     9    jarEntry  Ljava/util/jar/JarEntry;
           13   24    10        name  Ljava/lang/String;
           14   24    11        last  I
           16   18    12      parent  Ljava/io/File;
           27   29     8           e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
           8    25      26  Class java.io.IOException
           8    29      29  any
          31    32      33  Class java.lang.Throwable
          36    37      38  Class java.lang.Throwable
          42    43      44  Class java.lang.Throwable
          47    48      49  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException
    MethodParameters:
          Name  Flags
      jar       
      pathname  
      dirname   

  public static boolean copy(java.io.File, java.io.File);
    descriptor: (Ljava/io/File;Ljava/io/File;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // java.io.File src
        start local 1 // java.io.File dest
         0: .line 168
            iconst_1
            istore 2 /* result */
        start local 2 // boolean result
         1: .line 171
            aload 0 /* src */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 5
         2: .line 172
            aload 0 /* src */
            invokevirtual java.io.File.list:()[Ljava/lang/String;
            astore 3 /* files */
        start local 3 // java.lang.String[] files
         3: .line 173
            aload 1 /* dest */
            invokevirtual java.io.File.mkdir:()Z
            istore 2 /* result */
         4: .line 174
            goto 7
        end local 3 // java.lang.String[] files
         5: .line 175
      StackMap locals: int
      StackMap stack:
            iconst_1
            anewarray java.lang.String
            astore 3 /* files */
        start local 3 // java.lang.String[] files
         6: .line 176
            aload 3 /* files */
            iconst_0
            ldc ""
            aastore
         7: .line 178
      StackMap locals: java.lang.String[]
      StackMap stack:
            aload 3 /* files */
            ifnonnull 9
         8: .line 179
            iconst_0
            anewarray java.lang.String
            astore 3 /* files */
         9: .line 181
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        10: goto 51
        11: .line 182
      StackMap locals: int
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* src */
            aload 3 /* files */
            iload 4 /* i */
            aaload
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 5 /* fileSrc */
        start local 5 // java.io.File fileSrc
        12: .line 183
            new java.io.File
            dup
            aload 1 /* dest */
            aload 3 /* files */
            iload 4 /* i */
            aaload
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 6 /* fileDest */
        start local 6 // java.io.File fileDest
        13: .line 184
            aload 5 /* fileSrc */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 16
        14: .line 185
            aload 5 /* fileSrc */
            aload 6 /* fileDest */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.copy:(Ljava/io/File;Ljava/io/File;)Z
            istore 2 /* result */
        15: .line 186
            goto 50
        16: .line 187
      StackMap locals: java.io.File java.io.File
      StackMap stack:
            aconst_null
            astore 7 /* ic */
        start local 7 // java.nio.channels.FileChannel ic
        17: .line 188
            aconst_null
            astore 8 /* oc */
        start local 8 // java.nio.channels.FileChannel oc
        18: .line 190
            new java.io.FileInputStream
            dup
            aload 5 /* fileSrc */
            invokespecial java.io.FileInputStream.<init>:(Ljava/io/File;)V
            invokevirtual java.io.FileInputStream.getChannel:()Ljava/nio/channels/FileChannel;
            astore 7 /* ic */
        19: .line 191
            new java.io.FileOutputStream
            dup
            aload 6 /* fileDest */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            invokevirtual java.io.FileOutputStream.getChannel:()Ljava/nio/channels/FileChannel;
            astore 8 /* oc */
        20: .line 192
            aload 7 /* ic */
            lconst_0
            aload 7 /* ic */
            invokevirtual java.nio.channels.FileChannel.size:()J
            aload 8 /* oc */
            invokevirtual java.nio.channels.FileChannel.transferTo:(JJLjava/nio/channels/WritableByteChannel;)J
            pop2
        21: .line 193
            goto 42
      StackMap locals: java.io.File java.io.File int java.lang.String[] int java.io.File java.io.File java.nio.channels.FileChannel java.nio.channels.FileChannel
      StackMap stack: java.io.IOException
        22: pop
        23: .line 195
            iconst_0
            istore 2 /* result */
        24: .line 197
            aload 7 /* ic */
            ifnull 28
        25: .line 199
            aload 7 /* ic */
            invokevirtual java.nio.channels.FileChannel.close:()V
        26: .line 200
            goto 28
      StackMap locals:
      StackMap stack: java.io.IOException
        27: pop
        28: .line 203
      StackMap locals:
      StackMap stack:
            aload 8 /* oc */
            ifnull 50
        29: .line 205
            aload 8 /* oc */
            invokevirtual java.nio.channels.FileChannel.close:()V
        30: .line 206
            goto 50
      StackMap locals:
      StackMap stack: java.io.IOException
        31: pop
            goto 50
        32: .line 196
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 9
        33: .line 197
            aload 7 /* ic */
            ifnull 37
        34: .line 199
            aload 7 /* ic */
            invokevirtual java.nio.channels.FileChannel.close:()V
        35: .line 200
            goto 37
      StackMap locals: java.io.File java.io.File int java.lang.String[] int java.io.File java.io.File java.nio.channels.FileChannel java.nio.channels.FileChannel java.lang.Throwable
      StackMap stack: java.io.IOException
        36: pop
        37: .line 203
      StackMap locals:
      StackMap stack:
            aload 8 /* oc */
            ifnull 41
        38: .line 205
            aload 8 /* oc */
            invokevirtual java.nio.channels.FileChannel.close:()V
        39: .line 206
            goto 41
      StackMap locals:
      StackMap stack: java.io.IOException
        40: pop
        41: .line 209
      StackMap locals:
      StackMap stack:
            aload 9
            athrow
        42: .line 197
      StackMap locals:
      StackMap stack:
            aload 7 /* ic */
            ifnull 46
        43: .line 199
            aload 7 /* ic */
            invokevirtual java.nio.channels.FileChannel.close:()V
        44: .line 200
            goto 46
      StackMap locals:
      StackMap stack: java.io.IOException
        45: pop
        46: .line 203
      StackMap locals:
      StackMap stack:
            aload 8 /* oc */
            ifnull 50
        47: .line 205
            aload 8 /* oc */
            invokevirtual java.nio.channels.FileChannel.close:()V
        48: .line 206
            goto 50
      StackMap locals:
      StackMap stack: java.io.IOException
        49: pop
        end local 8 // java.nio.channels.FileChannel oc
        end local 7 // java.nio.channels.FileChannel ic
        end local 6 // java.io.File fileDest
        end local 5 // java.io.File fileSrc
        50: .line 181
      StackMap locals: java.io.File java.io.File int java.lang.String[] int
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        51: iload 4 /* i */
            aload 3 /* files */
            arraylength
            if_icmpge 52
            iload 2 /* result */
            ifne 11
        end local 4 // int i
        52: .line 212
      StackMap locals:
      StackMap stack:
            iload 2 /* result */
            ireturn
        end local 3 // java.lang.String[] files
        end local 2 // boolean result
        end local 1 // java.io.File dest
        end local 0 // java.io.File src
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   53     0       src  Ljava/io/File;
            0   53     1      dest  Ljava/io/File;
            1   53     2    result  Z
            3    5     3     files  [Ljava/lang/String;
            6   53     3     files  [Ljava/lang/String;
           10   52     4         i  I
           12   50     5   fileSrc  Ljava/io/File;
           13   50     6  fileDest  Ljava/io/File;
           17   50     7        ic  Ljava/nio/channels/FileChannel;
           18   50     8        oc  Ljava/nio/channels/FileChannel;
      Exception table:
        from    to  target  type
          18    21      22  Class java.io.IOException
          25    26      27  Class java.io.IOException
          29    30      31  Class java.io.IOException
          18    24      32  any
          34    35      36  Class java.io.IOException
          38    39      40  Class java.io.IOException
          43    44      45  Class java.io.IOException
          47    48      49  Class java.io.IOException
    MethodParameters:
      Name  Flags
      src   
      dest  

  public static boolean delete(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.io.File dir
         0: .line 222
            aload 0 /* dir */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 2
         1: .line 223
            aload 0 /* dir */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.deleteDir:(Ljava/io/File;)Z
            ireturn
         2: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* dir */
            invokevirtual java.io.File.delete:()Z
            ireturn
        end local 0 // java.io.File dir
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0   dir  Ljava/io/File;
    MethodParameters:
      Name  Flags
      dir   

  public static boolean deleteDir(java.io.File);
    descriptor: (Ljava/io/File;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=4, args_size=1
        start local 0 // java.io.File dir
         0: .line 236
            aload 0 /* dir */
            invokevirtual java.io.File.list:()[Ljava/lang/String;
            astore 1 /* files */
        start local 1 // java.lang.String[] files
         1: .line 237
            aload 1 /* files */
            ifnonnull 3
         2: .line 238
            iconst_0
            anewarray java.lang.String
            astore 1 /* files */
         3: .line 240
      StackMap locals: java.lang.String[]
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 12
         5: .line 241
      StackMap locals: int
      StackMap stack:
            new java.io.File
            dup
            aload 0 /* dir */
            aload 1 /* files */
            iload 2 /* i */
            aaload
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* file */
        start local 3 // java.io.File file
         6: .line 242
            aload 3 /* file */
            invokevirtual java.io.File.isDirectory:()Z
            ifeq 9
         7: .line 243
            aload 3 /* file */
            invokestatic org.glassfish.grizzly.http.server.util.ExpandJar.deleteDir:(Ljava/io/File;)Z
            pop
         8: .line 244
            goto 11
         9: .line 245
      StackMap locals: java.io.File
      StackMap stack:
            aload 3 /* file */
            invokevirtual java.io.File.delete:()Z
            ifne 11
        10: .line 246
            new java.lang.IllegalStateException
            dup
            ldc "Unable to delete file: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 3 /* file */
            invokevirtual java.io.File.getAbsolutePath:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 3 // java.io.File file
        11: .line 240
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        12: iload 2 /* i */
            aload 1 /* files */
            arraylength
            if_icmplt 5
        end local 2 // int i
        13: .line 250
            aload 0 /* dir */
            invokevirtual java.io.File.delete:()Z
            ireturn
        end local 1 // java.lang.String[] files
        end local 0 // java.io.File dir
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   14     0    dir  Ljava/io/File;
            1   14     1  files  [Ljava/lang/String;
            4   13     2      i  I
            6   11     3   file  Ljava/io/File;
    MethodParameters:
      Name  Flags
      dir   

  protected static void expand(java.io.InputStream, java.io.File, java.lang.String);
    descriptor: (Ljava/io/InputStream;Ljava/io/File;Ljava/lang/String;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // java.io.InputStream input
        start local 1 // java.io.File docBase
        start local 2 // java.lang.String name
         0: .line 266
            new java.io.File
            dup
            aload 1 /* docBase */
            aload 2 /* name */
            invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 3 /* file */
        start local 3 // java.io.File file
         1: .line 267
            aconst_null
            astore 4 /* output */
        start local 4 // java.io.BufferedOutputStream output
         2: .line 269
            new java.io.BufferedOutputStream
            dup
            new java.io.FileOutputStream
            dup
            aload 3 /* file */
            invokespecial java.io.FileOutputStream.<init>:(Ljava/io/File;)V
            invokespecial java.io.BufferedOutputStream.<init>:(Ljava/io/OutputStream;)V
            astore 4 /* output */
         3: .line 270
            sipush 2048
            newarray 8
            astore 5 /* buffer */
        start local 5 // byte[] buffer
         4: .line 272
      StackMap locals: java.io.File java.io.BufferedOutputStream byte[]
      StackMap stack:
            aload 0 /* input */
            aload 5 /* buffer */
            invokevirtual java.io.InputStream.read:([B)I
            istore 6 /* n */
        start local 6 // int n
         5: .line 273
            iload 6 /* n */
            ifgt 7
         6: .line 274
            goto 15
         7: .line 276
      StackMap locals: int
      StackMap stack:
            aload 4 /* output */
            aload 5 /* buffer */
            iconst_0
            iload 6 /* n */
            invokevirtual java.io.BufferedOutputStream.write:([BII)V
        end local 6 // int n
         8: .line 271
            goto 4
        end local 5 // byte[] buffer
         9: .line 278
      StackMap locals: java.io.InputStream java.io.File java.lang.String java.io.File java.io.BufferedOutputStream
      StackMap stack: java.lang.Throwable
            astore 7
        10: .line 279
            aload 4 /* output */
            ifnull 14
        11: .line 281
            aload 4 /* output */
            invokevirtual java.io.BufferedOutputStream.close:()V
        12: .line 282
            goto 14
      StackMap locals: java.io.InputStream java.io.File java.lang.String java.io.File java.io.BufferedOutputStream top top java.lang.Throwable
      StackMap stack: java.io.IOException
        13: pop
        14: .line 286
      StackMap locals:
      StackMap stack:
            aload 7
            athrow
        15: .line 279
      StackMap locals: java.io.InputStream java.io.File java.lang.String java.io.File java.io.BufferedOutputStream
      StackMap stack:
            aload 4 /* output */
            ifnull 19
        16: .line 281
            aload 4 /* output */
            invokevirtual java.io.BufferedOutputStream.close:()V
        17: .line 282
            goto 19
      StackMap locals:
      StackMap stack: java.io.IOException
        18: pop
        19: .line 288
      StackMap locals:
      StackMap stack:
            return
        end local 4 // java.io.BufferedOutputStream output
        end local 3 // java.io.File file
        end local 2 // java.lang.String name
        end local 1 // java.io.File docBase
        end local 0 // java.io.InputStream input
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   20     0    input  Ljava/io/InputStream;
            0   20     1  docBase  Ljava/io/File;
            0   20     2     name  Ljava/lang/String;
            1   20     3     file  Ljava/io/File;
            2   20     4   output  Ljava/io/BufferedOutputStream;
            4    9     5   buffer  [B
            5    8     6        n  I
      Exception table:
        from    to  target  type
           2     9       9  any
          11    12      13  Class java.io.IOException
          16    17      18  Class java.io.IOException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      input    
      docBase  
      name     
}
SourceFile: "ExpandJar.java"