public class java.util.jar.JarInputStream extends java.util.zip.ZipInputStream
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: java.util.jar.JarInputStream
  super_class: java.util.zip.ZipInputStream
{
  private java.util.jar.Manifest man;
    descriptor: Ljava/util/jar/Manifest;
    flags: (0x0002) ACC_PRIVATE

  private java.util.jar.JarEntry first;
    descriptor: Ljava/util/jar/JarEntry;
    flags: (0x0002) ACC_PRIVATE

  private java.util.jar.JarVerifier jv;
    descriptor: Ljava/util/jar/JarVerifier;
    flags: (0x0002) ACC_PRIVATE

  private sun.security.util.ManifestEntryVerifier mev;
    descriptor: Lsun/security/util/ManifestEntryVerifier;
    flags: (0x0002) ACC_PRIVATE

  private final boolean doVerify;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private boolean tryManifest;
    descriptor: Z
    flags: (0x0002) ACC_PRIVATE

  public void <init>(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // java.io.InputStream in
         0: .line 62
            aload 0 /* this */
            aload 1 /* in */
            iconst_1
            invokespecial java.util.jar.JarInputStream.<init>:(Ljava/io/InputStream;Z)V
         1: .line 63
            return
        end local 1 // java.io.InputStream in
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/util/jar/JarInputStream;
            0    2     1    in  Ljava/io/InputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

  public void <init>(java.io.InputStream, boolean);
    descriptor: (Ljava/io/InputStream;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // java.io.InputStream in
        start local 2 // boolean verify
         0: .line 76
            aload 0 /* this */
            aload 1 /* in */
            invokespecial java.util.zip.ZipInputStream.<init>:(Ljava/io/InputStream;)V
         1: .line 77
            aload 0 /* this */
            iload 2 /* verify */
            putfield java.util.jar.JarInputStream.doVerify:Z
         2: .line 83
            aload 0 /* this */
            invokespecial java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            checkcast java.util.jar.JarEntry
            astore 3 /* e */
        start local 3 // java.util.jar.JarEntry e
         3: .line 84
            aload 3 /* e */
            ifnull 5
            aload 3 /* e */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            ldc "META-INF/"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 85
            aload 0 /* this */
            invokespecial java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            checkcast java.util.jar.JarEntry
            astore 3 /* e */
         5: .line 86
      StackMap locals: java.util.jar.JarInputStream java.io.InputStream int java.util.jar.JarEntry
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            aload 3 /* e */
            invokevirtual java.util.jar.JarInputStream.checkManifest:(Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry;
            putfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
         6: .line 87
            return
        end local 3 // java.util.jar.JarEntry e
        end local 2 // boolean verify
        end local 1 // java.io.InputStream in
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljava/util/jar/JarInputStream;
            0    7     1      in  Ljava/io/InputStream;
            0    7     2  verify  Z
            3    7     3       e  Ljava/util/jar/JarEntry;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      in      
      verify  

  private java.util.jar.JarEntry checkManifest(java.util.jar.JarEntry);
    descriptor: (Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // java.util.jar.JarEntry e
         0: .line 92
            aload 1 /* e */
            ifnull 9
            ldc "META-INF/MANIFEST.MF"
            aload 1 /* e */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 9
         1: .line 93
            aload 0 /* this */
            new java.util.jar.Manifest
            dup
            invokespecial java.util.jar.Manifest.<init>:()V
            putfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
         2: .line 94
            aload 0 /* this */
            new java.io.BufferedInputStream
            dup
            aload 0 /* this */
            invokespecial java.io.BufferedInputStream.<init>:(Ljava/io/InputStream;)V
            invokevirtual java.util.jar.JarInputStream.getBytes:(Ljava/io/InputStream;)[B
            astore 2 /* bytes */
        start local 2 // byte[] bytes
         3: .line 95
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
            new java.io.ByteArrayInputStream
            dup
            aload 2 /* bytes */
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
            invokevirtual java.util.jar.Manifest.read:(Ljava/io/InputStream;)V
         4: .line 96
            aload 0 /* this */
            invokevirtual java.util.jar.JarInputStream.closeEntry:()V
         5: .line 97
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.doVerify:Z
            ifeq 8
         6: .line 98
            aload 0 /* this */
            new java.util.jar.JarVerifier
            dup
            aload 2 /* bytes */
            invokespecial java.util.jar.JarVerifier.<init>:([B)V
            putfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
         7: .line 99
            aload 0 /* this */
            new sun.security.util.ManifestEntryVerifier
            dup
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
            invokespecial sun.security.util.ManifestEntryVerifier.<init>:(Ljava/util/jar/Manifest;)V
            putfield java.util.jar.JarInputStream.mev:Lsun/security/util/ManifestEntryVerifier;
         8: .line 101
      StackMap locals: byte[]
      StackMap stack:
            aload 0 /* this */
            invokespecial java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            checkcast java.util.jar.JarEntry
            areturn
        end local 2 // byte[] bytes
         9: .line 103
      StackMap locals:
      StackMap stack:
            aload 1 /* e */
            areturn
        end local 1 // java.util.jar.JarEntry e
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   10     0   this  Ljava/util/jar/JarInputStream;
            0   10     1      e  Ljava/util/jar/JarEntry;
            3    9     2  bytes  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      e     

  private byte[] getBytes(java.io.InputStream);
    descriptor: (Ljava/io/InputStream;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // java.io.InputStream is
         0: .line 109
            sipush 8192
            newarray 8
            astore 2 /* buffer */
        start local 2 // byte[] buffer
         1: .line 110
            new java.io.ByteArrayOutputStream
            dup
            sipush 2048
            invokespecial java.io.ByteArrayOutputStream.<init>:(I)V
            astore 3 /* baos */
        start local 3 // java.io.ByteArrayOutputStream baos
         2: .line 112
            goto 4
        start local 4 // int n
         3: .line 113
      StackMap locals: byte[] java.io.ByteArrayOutputStream int
      StackMap stack:
            aload 3 /* baos */
            aload 2 /* buffer */
            iconst_0
            iload 4 /* n */
            invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
        end local 4 // int n
         4: .line 112
      StackMap locals:
      StackMap stack:
            aload 1 /* is */
            aload 2 /* buffer */
            iconst_0
            aload 2 /* buffer */
            arraylength
            invokevirtual java.io.InputStream.read:([BII)I
            dup
            istore 4 /* n */
        start local 4 // int n
         5: iconst_m1
            if_icmpne 3
         6: .line 115
            aload 3 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            areturn
        end local 4 // int n
        end local 3 // java.io.ByteArrayOutputStream baos
        end local 2 // byte[] buffer
        end local 1 // java.io.InputStream is
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Ljava/util/jar/JarInputStream;
            0    7     1      is  Ljava/io/InputStream;
            1    7     2  buffer  [B
            2    7     3    baos  Ljava/io/ByteArrayOutputStream;
            3    4     4       n  I
            5    7     4       n  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      is    

  public java.util.jar.Manifest getManifest();
    descriptor: ()Ljava/util/jar/Manifest;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.jar.JarInputStream this
         0: .line 126
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
            areturn
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/jar/JarInputStream;

  public java.util.zip.ZipEntry getNextEntry();
    descriptor: ()Ljava/util/zip/ZipEntry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.util.jar.JarInputStream this
         0: .line 141
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
            ifnonnull 6
         1: .line 142
            aload 0 /* this */
            invokespecial java.util.zip.ZipInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            checkcast java.util.jar.JarEntry
            astore 1 /* e */
        start local 1 // java.util.jar.JarEntry e
         2: .line 143
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.tryManifest:Z
            ifeq 10
         3: .line 144
            aload 0 /* this */
            aload 1 /* e */
            invokevirtual java.util.jar.JarInputStream.checkManifest:(Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry;
            astore 1 /* e */
         4: .line 145
            aload 0 /* this */
            iconst_0
            putfield java.util.jar.JarInputStream.tryManifest:Z
         5: .line 147
            goto 10
        end local 1 // java.util.jar.JarEntry e
         6: .line 148
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
            astore 1 /* e */
        start local 1 // java.util.jar.JarEntry e
         7: .line 149
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            ldc "META-INF/INDEX.LIST"
            invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
            ifeq 9
         8: .line 150
            aload 0 /* this */
            iconst_1
            putfield java.util.jar.JarInputStream.tryManifest:Z
         9: .line 151
      StackMap locals: java.util.jar.JarEntry
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
        10: .line 153
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
            ifnull 16
            aload 1 /* e */
            ifnull 16
        11: .line 157
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
            invokevirtual java.util.jar.JarVerifier.nothingToVerify:()Z
            ifeq 15
        12: .line 158
            aload 0 /* this */
            aconst_null
            putfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
        13: .line 159
            aload 0 /* this */
            aconst_null
            putfield java.util.jar.JarInputStream.mev:Lsun/security/util/ManifestEntryVerifier;
        14: .line 160
            goto 16
        15: .line 161
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
            aload 1 /* e */
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.mev:Lsun/security/util/ManifestEntryVerifier;
            invokevirtual java.util.jar.JarVerifier.beginEntry:(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V
        16: .line 164
      StackMap locals:
      StackMap stack:
            aload 1 /* e */
            areturn
        end local 1 // java.util.jar.JarEntry e
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   17     0  this  Ljava/util/jar/JarInputStream;
            2    6     1     e  Ljava/util/jar/JarEntry;
            7   17     1     e  Ljava/util/jar/JarEntry;
    Exceptions:
      throws java.io.IOException

  public java.util.jar.JarEntry getNextJarEntry();
    descriptor: ()Ljava/util/jar/JarEntry;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.util.jar.JarInputStream this
         0: .line 179
            aload 0 /* this */
            invokevirtual java.util.jar.JarInputStream.getNextEntry:()Ljava/util/zip/ZipEntry;
            checkcast java.util.jar.JarEntry
            areturn
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/util/jar/JarInputStream;
    Exceptions:
      throws java.io.IOException

  public int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=4
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 206
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.first:Ljava/util/jar/JarEntry;
            ifnonnull 3
         1: .line 207
            aload 0 /* this */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            invokespecial java.util.zip.ZipInputStream.read:([BII)I
            istore 4 /* n */
        start local 4 // int n
         2: .line 208
            goto 4
        end local 4 // int n
         3: .line 209
      StackMap locals:
      StackMap stack:
            iconst_m1
            istore 4 /* n */
        start local 4 // int n
         4: .line 211
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
            ifnull 6
         5: .line 212
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.jv:Ljava/util/jar/JarVerifier;
            iload 4 /* n */
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.mev:Lsun/security/util/ManifestEntryVerifier;
            invokevirtual java.util.jar.JarVerifier.update:(I[BIILsun/security/util/ManifestEntryVerifier;)V
         6: .line 214
      StackMap locals:
      StackMap stack:
            iload 4 /* n */
            ireturn
        end local 4 // int n
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Ljava/util/jar/JarInputStream;
            0    7     1     b  [B
            0    7     2   off  I
            0    7     3   len  I
            2    3     4     n  I
            4    7     4     n  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      b     
      off   
      len   

  protected java.util.zip.ZipEntry createZipEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/util/zip/ZipEntry;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // java.util.jar.JarInputStream this
        start local 1 // java.lang.String name
         0: .line 227
            new java.util.jar.JarEntry
            dup
            aload 1 /* name */
            invokespecial java.util.jar.JarEntry.<init>:(Ljava/lang/String;)V
            astore 2 /* e */
        start local 2 // java.util.jar.JarEntry e
         1: .line 228
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
            ifnull 3
         2: .line 229
            aload 2 /* e */
            aload 0 /* this */
            getfield java.util.jar.JarInputStream.man:Ljava/util/jar/Manifest;
            aload 1 /* name */
            invokevirtual java.util.jar.Manifest.getAttributes:(Ljava/lang/String;)Ljava/util/jar/Attributes;
            putfield java.util.jar.JarEntry.attr:Ljava/util/jar/Attributes;
         3: .line 231
      StackMap locals: java.util.jar.JarEntry
      StackMap stack:
            aload 2 /* e */
            areturn
        end local 2 // java.util.jar.JarEntry e
        end local 1 // java.lang.String name
        end local 0 // java.util.jar.JarInputStream this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Ljava/util/jar/JarInputStream;
            0    4     1  name  Ljava/lang/String;
            1    4     2     e  Ljava/util/jar/JarEntry;
    MethodParameters:
      Name  Flags
      name  
}
SourceFile: "JarInputStream.java"