public abstract class org.apache.tomcat.util.scan.AbstractInputStreamJar implements org.apache.tomcat.Jar
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.tomcat.util.scan.AbstractInputStreamJar
  super_class: java.lang.Object
{
  private final java.net.URL jarFileURL;
    descriptor: Ljava/net/URL;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private org.apache.tomcat.util.scan.NonClosingJarInputStream jarInputStream;
    descriptor: Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
    flags: (0x0002) ACC_PRIVATE

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

  private java.lang.Boolean multiRelease;
    descriptor: Ljava/lang/Boolean;
    flags: (0x0002) ACC_PRIVATE

  private java.util.Map<java.lang.String, java.lang.String> mrMap;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;

  public void <init>(java.net.URL);
    descriptor: (Ljava/net/URL;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.net.URL jarFileUrl
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 39
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
         2: .line 40
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
         3: .line 41
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
         4: .line 42
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
         5: .line 45
            aload 0 /* this */
            aload 1 /* jarFileUrl */
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarFileURL:Ljava/net/URL;
         6: .line 46
            return
        end local 1 // java.net.URL jarFileUrl
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0    7     1  jarFileUrl  Ljava/net/URL;
    MethodParameters:
            Name  Flags
      jarFileUrl  

  public java.net.URL getJarFileURL();
    descriptor: ()Ljava/net/URL;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 51
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarFileURL:Ljava/net/URL;
            areturn
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;

  public void nextEntry();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 57
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            ifnonnull 6
         1: .line 59
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.reset:()V
         2: .line 60
            goto 6
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 61
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
         5: .line 62
            return
         6: .line 66
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
         7: .line 67
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 16
         8: .line 70
            goto 10
         9: .line 74
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
        10: .line 70
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnull 20
        11: .line 71
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 9
        12: .line 72
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            ldc "META-INF/versions/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 20
        13: .line 73
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 9
        14: .line 76
            goto 20
        15: .line 79
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
        16: .line 78
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnull 20
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            ldc "META-INF/versions/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifne 15
        17: .line 82
            goto 20
      StackMap locals:
      StackMap stack: java.io.IOException
        18: pop
        19: .line 83
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
        20: .line 85
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   21     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException
           6    17      18  Class java.io.IOException

  public java.lang.String getEntryName();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 92
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnonnull 2
         1: .line 93
            aconst_null
            areturn
         2: .line 95
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;

  public java.io.InputStream getEntryInputStream();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 102
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            areturn
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
    Exceptions:
      throws java.io.IOException

  public java.io.InputStream getInputStream(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.lang.String name
         0: .line 108
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.gotoEntry:(Ljava/lang/String;)V
         1: .line 109
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnonnull 3
         2: .line 110
            aconst_null
            areturn
         3: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
         4: .line 116
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            areturn
        end local 1 // java.lang.String name
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0    5     1  name  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  public long getLastModified(java.lang.String);
    descriptor: (Ljava/lang/String;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.lang.String name
         0: .line 123
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.gotoEntry:(Ljava/lang/String;)V
         1: .line 124
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnonnull 3
         2: .line 125
            ldc -1
            lreturn
         3: .line 127
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getTime:()J
            lreturn
        end local 1 // java.lang.String name
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0    4     1  name  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  public boolean exists(java.lang.String);
    descriptor: (Ljava/lang/String;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.lang.String name
         0: .line 134
            aload 0 /* this */
            aload 1 /* name */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.gotoEntry:(Ljava/lang/String;)V
         1: .line 135
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnull 2
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         2: iconst_0
            ireturn
        end local 1 // java.lang.String name
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0    3     1  name  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  public java.lang.String getURL(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.lang.String entry
         0: .line 141
            new java.lang.StringBuilder
            dup
            ldc "jar:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            astore 2 /* result */
        start local 2 // java.lang.StringBuilder result
         1: .line 142
            aload 2 /* result */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.getJarFileURL:()Ljava/net/URL;
            invokevirtual java.net.URL.toExternalForm:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         2: .line 143
            aload 2 /* result */
            ldc "!/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         3: .line 144
            aload 2 /* result */
            aload 1 /* entry */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         4: .line 146
            aload 2 /* result */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            areturn
        end local 2 // java.lang.StringBuilder result
        end local 1 // java.lang.String entry
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0    5     1   entry  Ljava/lang/String;
            1    5     2  result  Ljava/lang/StringBuilder;
    MethodParameters:
       Name  Flags
      entry  

  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 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 152
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.reset:()V
         1: .line 153
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getManifest:()Ljava/util/jar/Manifest;
            areturn
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
    Exceptions:
      throws java.io.IOException

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 159
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.closeStream:()V
         1: .line 160
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
         2: .line 161
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.createJarInputStream:()Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
         3: .line 163
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
            ifnonnull 19
         4: .line 164
            invokestatic org.apache.tomcat.util.compat.JreCompat.isJre9Available:()Z
            ifeq 15
         5: .line 165
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getManifest:()Ljava/util/jar/Manifest;
            astore 1 /* manifest */
        start local 1 // java.util.jar.Manifest manifest
         6: .line 166
            aload 1 /* manifest */
            ifnonnull 9
         7: .line 167
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
         8: .line 168
            goto 16
         9: .line 169
      StackMap locals: java.util.jar.Manifest
      StackMap stack:
            aload 1 /* manifest */
            invokevirtual java.util.jar.Manifest.getMainAttributes:()Ljava/util/jar/Attributes;
            ldc "Multi-Release"
            invokevirtual java.util.jar.Attributes.getValue:(Ljava/lang/String;)Ljava/lang/String;
            astore 2 /* mrValue */
        start local 2 // java.lang.String mrValue
        10: .line 170
            aload 2 /* mrValue */
            ifnonnull 13
        11: .line 171
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
        12: .line 172
            goto 16
        13: .line 173
      StackMap locals: java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 2 /* mrValue */
            invokestatic java.lang.Boolean.valueOf:(Ljava/lang/String;)Ljava/lang/Boolean;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
        end local 2 // java.lang.String mrValue
        end local 1 // java.util.jar.Manifest manifest
        14: .line 176
            goto 16
        15: .line 177
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
        16: .line 179
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 19
        17: .line 180
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
            ifnonnull 19
        18: .line 181
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.populateMrMap:()V
        19: .line 185
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   20     0      this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            6   14     1  manifest  Ljava/util/jar/Manifest;
           10   14     2   mrValue  Ljava/lang/String;
    Exceptions:
      throws java.io.IOException

  protected void closeStream();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 189
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            ifnull 4
         1: .line 191
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.reallyClose:()V
         2: .line 192
            goto 4
      StackMap locals:
      StackMap stack: java.io.IOException
         3: pop
         4: .line 196
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
      Exception table:
        from    to  target  type
           1     2       3  Class java.io.IOException

  protected abstract org.apache.tomcat.util.scan.NonClosingJarInputStream createJarInputStream();
    descriptor: ()Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.io.IOException

  private void gotoEntry(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
        start local 1 // java.lang.String name
         0: .line 203
            iconst_1
            istore 2 /* needsReset */
        start local 2 // boolean needsReset
         1: .line 204
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
            ifnonnull 4
         2: .line 205
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.reset:()V
         3: .line 206
            iconst_0
            istore 2 /* needsReset */
         4: .line 210
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.multiRelease:Ljava/lang/Boolean;
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifeq 9
         5: .line 211
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
            aload 1 /* name */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.String
            astore 3 /* mrName */
        start local 3 // java.lang.String mrName
         6: .line 212
            aload 3 /* mrName */
            ifnull 12
         7: .line 213
            aload 3 /* mrName */
            astore 1 /* name */
        end local 3 // java.lang.String mrName
         8: .line 215
            goto 12
      StackMap locals:
      StackMap stack:
         9: aload 1 /* name */
            ldc "META-INF/versions/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 12
        10: .line 216
            aload 0 /* this */
            aconst_null
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
        11: .line 217
            return
        12: .line 220
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            ifnull 14
            aload 1 /* name */
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 14
        13: .line 221
            return
        14: .line 223
      StackMap locals:
      StackMap stack:
            iload 2 /* needsReset */
            ifeq 16
        15: .line 224
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.reset:()V
        16: .line 227
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* jarEntry */
        start local 3 // java.util.jar.JarEntry jarEntry
        17: .line 228
            goto 22
        18: .line 229
      StackMap locals: java.util.jar.JarEntry
      StackMap stack:
            aload 1 /* name */
            aload 3 /* jarEntry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 21
        19: .line 230
            aload 0 /* this */
            aload 3 /* jarEntry */
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.entry:Ljava/util/jar/JarEntry;
        20: .line 231
            goto 23
        21: .line 233
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* jarEntry */
        22: .line 228
      StackMap locals:
      StackMap stack:
            aload 3 /* jarEntry */
            ifnonnull 18
        23: .line 235
      StackMap locals:
      StackMap stack:
            return
        end local 3 // java.util.jar.JarEntry jarEntry
        end local 2 // boolean needsReset
        end local 1 // java.lang.String name
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   24     0        this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            0   24     1        name  Ljava/lang/String;
            1   24     2  needsReset  Z
            6    8     3      mrName  Ljava/lang/String;
           17   24     3    jarEntry  Ljava/util/jar/JarEntry;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      name  

  private void populateMrMap();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
         0: .line 239
            invokestatic org.apache.tomcat.util.compat.JreCompat.getInstance:()Lorg/apache/tomcat/util/compat/JreCompat;
            invokevirtual org.apache.tomcat.util.compat.JreCompat.jarFileRuntimeMajorVersion:()I
            istore 1 /* targetVersion */
        start local 1 // int targetVersion
         1: .line 241
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 2 /* mrVersions */
        start local 2 // java.util.Map mrVersions
         2: .line 243
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* jarEntry */
        start local 3 // java.util.jar.JarEntry jarEntry
         3: .line 247
            goto 18
         4: .line 248
      StackMap locals: int java.util.Map java.util.jar.JarEntry
      StackMap stack:
            aload 3 /* jarEntry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         5: .line 249
            aload 4 /* name */
            ldc "META-INF/versions/"
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 17
            aload 4 /* name */
            ldc ".class"
            invokevirtual java.lang.String.endsWith:(Ljava/lang/String;)Z
            ifeq 17
         6: .line 252
            aload 4 /* name */
            bipush 47
            bipush 18
            invokevirtual java.lang.String.indexOf:(II)I
            istore 5 /* i */
        start local 5 // int i
         7: .line 253
            iload 5 /* i */
            ifle 17
         8: .line 254
            aload 4 /* name */
            iload 5 /* i */
            iconst_1
            iadd
            invokevirtual java.lang.String.substring:(I)Ljava/lang/String;
            astore 6 /* baseName */
        start local 6 // java.lang.String baseName
         9: .line 255
            aload 4 /* name */
            bipush 18
            iload 5 /* i */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            istore 7 /* version */
        start local 7 // int version
        10: .line 259
            iload 7 /* version */
            iload 1 /* targetVersion */
            if_icmpgt 17
        11: .line 260
            aload 2 /* mrVersions */
            aload 6 /* baseName */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 8 /* mappedVersion */
        start local 8 // java.lang.Integer mappedVersion
        12: .line 261
            aload 8 /* mappedVersion */
            ifnonnull 15
        13: .line 263
            aload 2 /* mrVersions */
            aload 6 /* baseName */
            iload 7 /* version */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        14: .line 264
            goto 17
        15: .line 267
      StackMap locals: org.apache.tomcat.util.scan.AbstractInputStreamJar int java.util.Map java.util.jar.JarEntry java.lang.String int java.lang.String int java.lang.Integer
      StackMap stack:
            iload 7 /* version */
            aload 8 /* mappedVersion */
            invokevirtual java.lang.Integer.intValue:()I
            if_icmple 17
        16: .line 269
            aload 2 /* mrVersions */
            aload 6 /* baseName */
            iload 7 /* version */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 8 // java.lang.Integer mappedVersion
        end local 7 // int version
        end local 6 // java.lang.String baseName
        end local 5 // int i
        17: .line 275
      StackMap locals: org.apache.tomcat.util.scan.AbstractInputStreamJar int java.util.Map java.util.jar.JarEntry java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            invokevirtual org.apache.tomcat.util.scan.NonClosingJarInputStream.getNextJarEntry:()Ljava/util/jar/JarEntry;
            astore 3 /* jarEntry */
        end local 4 // java.lang.String name
        18: .line 247
      StackMap locals:
      StackMap stack:
            aload 3 /* jarEntry */
            ifnonnull 4
        19: .line 278
            aload 0 /* this */
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
        20: .line 280
            aload 2 /* mrVersions */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 25
      StackMap locals: org.apache.tomcat.util.scan.AbstractInputStreamJar int java.util.Map java.util.jar.JarEntry top java.util.Iterator
      StackMap stack:
        21: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* mrVersion */
        start local 4 // java.util.Map$Entry mrVersion
        22: .line 281
            aload 0 /* this */
            getfield org.apache.tomcat.util.scan.AbstractInputStreamJar.mrMap:Ljava/util/Map;
            aload 4 /* mrVersion */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            new java.lang.StringBuilder
            dup
            ldc "META-INF/versions/"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* mrVersion */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        23: .line 282
            ldc "/"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* mrVersion */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.String
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        24: .line 281
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 4 // java.util.Map$Entry mrVersion
        25: .line 280
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 21
        26: .line 286
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.closeStream:()V
        27: .line 287
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.tomcat.util.scan.AbstractInputStreamJar.createJarInputStream:()Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
            putfield org.apache.tomcat.util.scan.AbstractInputStreamJar.jarInputStream:Lorg/apache/tomcat/util/scan/NonClosingJarInputStream;
        28: .line 288
            return
        end local 3 // java.util.jar.JarEntry jarEntry
        end local 2 // java.util.Map mrVersions
        end local 1 // int targetVersion
        end local 0 // org.apache.tomcat.util.scan.AbstractInputStreamJar this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0           this  Lorg/apache/tomcat/util/scan/AbstractInputStreamJar;
            1   29     1  targetVersion  I
            2   29     2     mrVersions  Ljava/util/Map<Ljava/lang/String;Ljava/lang/Integer;>;
            3   29     3       jarEntry  Ljava/util/jar/JarEntry;
            5   18     4           name  Ljava/lang/String;
            7   17     5              i  I
            9   17     6       baseName  Ljava/lang/String;
           10   17     7        version  I
           12   17     8  mappedVersion  Ljava/lang/Integer;
           22   25     4      mrVersion  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/lang/Integer;>;
    Exceptions:
      throws java.io.IOException
}
SourceFile: "AbstractInputStreamJar.java"
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map