public final class org.apache.catalina.webresources.JarContents
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: org.apache.catalina.webresources.JarContents
  super_class: java.lang.Object
{
  private final java.util.BitSet bits1;
    descriptor: Ljava/util/BitSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.BitSet bits2;
    descriptor: Ljava/util/BitSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final int HASH_PRIME_1;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 31

  private static final int HASH_PRIME_2;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 17

  private static final int TABLE_SIZE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2048

  public void <init>(java.util.jar.JarFile);
    descriptor: (Ljava/util/jar/JarFile;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // org.apache.catalina.webresources.JarContents this
        start local 1 // java.util.jar.JarFile jar
         0: .line 56
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 57
            aload 1 /* jar */
            invokevirtual java.util.jar.JarFile.entries:()Ljava/util/Enumeration;
            astore 2 /* entries */
        start local 2 // java.util.Enumeration entries
         2: .line 58
            aload 0 /* this */
            new java.util.BitSet
            dup
            sipush 2048
            invokespecial java.util.BitSet.<init>:(I)V
            putfield org.apache.catalina.webresources.JarContents.bits1:Ljava/util/BitSet;
         3: .line 59
            aload 0 /* this */
            new java.util.BitSet
            dup
            sipush 2048
            invokespecial java.util.BitSet.<init>:(I)V
            putfield org.apache.catalina.webresources.JarContents.bits2:Ljava/util/BitSet;
         4: .line 62
            goto 17
         5: .line 63
      StackMap locals: org.apache.catalina.webresources.JarContents java.util.jar.JarFile java.util.Enumeration
      StackMap stack:
            aload 2 /* entries */
            invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
            checkcast java.util.jar.JarEntry
            astore 3 /* entry */
        start local 3 // java.util.jar.JarEntry entry
         6: .line 64
            aload 3 /* entry */
            invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
            astore 4 /* name */
        start local 4 // java.lang.String name
         7: .line 65
            iconst_0
            istore 5 /* startPos */
        start local 5 // int startPos
         8: .line 70
            aload 4 /* name */
            iconst_0
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 9
            iconst_1
            goto 10
      StackMap locals: java.util.jar.JarEntry java.lang.String int
      StackMap stack:
         9: iconst_0
      StackMap locals:
      StackMap stack: int
        10: istore 6 /* precedingSlash */
        start local 6 // boolean precedingSlash
        11: .line 71
            iload 6 /* precedingSlash */
            ifeq 13
        12: .line 72
            iconst_1
            istore 5 /* startPos */
        13: .line 76
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            aload 4 /* name */
            iload 5 /* startPos */
            bipush 31
            invokevirtual org.apache.catalina.webresources.JarContents.hashcode:(Ljava/lang/String;II)I
            istore 7 /* pathHash1 */
        start local 7 // int pathHash1
        14: .line 77
            aload 0 /* this */
            aload 4 /* name */
            iload 5 /* startPos */
            bipush 17
            invokevirtual org.apache.catalina.webresources.JarContents.hashcode:(Ljava/lang/String;II)I
            istore 8 /* pathHash2 */
        start local 8 // int pathHash2
        15: .line 79
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarContents.bits1:Ljava/util/BitSet;
            iload 7 /* pathHash1 */
            sipush 2048
            irem
            invokevirtual java.util.BitSet.set:(I)V
        16: .line 80
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarContents.bits2:Ljava/util/BitSet;
            iload 8 /* pathHash2 */
            sipush 2048
            irem
            invokevirtual java.util.BitSet.set:(I)V
        end local 8 // int pathHash2
        end local 7 // int pathHash1
        end local 6 // boolean precedingSlash
        end local 5 // int startPos
        end local 4 // java.lang.String name
        end local 3 // java.util.jar.JarEntry entry
        17: .line 62
      StackMap locals: org.apache.catalina.webresources.JarContents java.util.jar.JarFile java.util.Enumeration
      StackMap stack:
            aload 2 /* entries */
            invokeinterface java.util.Enumeration.hasMoreElements:()Z
            ifne 5
        18: .line 82
            return
        end local 2 // java.util.Enumeration entries
        end local 1 // java.util.jar.JarFile jar
        end local 0 // org.apache.catalina.webresources.JarContents this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   19     0            this  Lorg/apache/catalina/webresources/JarContents;
            0   19     1             jar  Ljava/util/jar/JarFile;
            2   19     2         entries  Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
            6   17     3           entry  Ljava/util/jar/JarEntry;
            7   17     4            name  Ljava/lang/String;
            8   17     5        startPos  I
           11   17     6  precedingSlash  Z
           14   17     7       pathHash1  I
           15   17     8       pathHash2  I
    MethodParameters:
      Name  Flags
      jar   

  private int hashcode(java.lang.String, int, int);
    descriptor: (Ljava/lang/String;II)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=4
        start local 0 // org.apache.catalina.webresources.JarContents this
        start local 1 // java.lang.String content
        start local 2 // int startPos
        start local 3 // int hashPrime
         0: .line 95
            iload 3 /* hashPrime */
            iconst_2
            idiv
            istore 4 /* h */
        start local 4 // int h
         1: .line 96
            aload 1 /* content */
            invokevirtual java.lang.String.length:()I
            istore 5 /* contentLength */
        start local 5 // int contentLength
         2: .line 97
            iload 2 /* startPos */
            istore 6 /* i */
        start local 6 // int i
         3: goto 6
         4: .line 98
      StackMap locals: int int int
      StackMap stack:
            iload 3 /* hashPrime */
            iload 4 /* h */
            imul
            aload 1 /* content */
            iload 6 /* i */
            invokevirtual java.lang.String.charAt:(I)C
            iadd
            istore 4 /* h */
         5: .line 97
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
         6: iload 6 /* i */
            iload 5 /* contentLength */
            if_icmplt 4
        end local 6 // int i
         7: .line 101
            iload 4 /* h */
            ifge 9
         8: .line 102
            iload 4 /* h */
            iconst_m1
            imul
            istore 4 /* h */
         9: .line 104
      StackMap locals:
      StackMap stack:
            iload 4 /* h */
            ireturn
        end local 5 // int contentLength
        end local 4 // int h
        end local 3 // int hashPrime
        end local 2 // int startPos
        end local 1 // java.lang.String content
        end local 0 // org.apache.catalina.webresources.JarContents this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0           this  Lorg/apache/catalina/webresources/JarContents;
            0   10     1        content  Ljava/lang/String;
            0   10     2       startPos  I
            0   10     3      hashPrime  I
            1   10     4              h  I
            2   10     5  contentLength  I
            3    7     6              i  I
    MethodParameters:
           Name  Flags
      content    
      startPos   
      hashPrime  

  public final boolean mightContainResource(java.lang.String, java.lang.String);
    descriptor: (Ljava/lang/String;Ljava/lang/String;)Z
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.apache.catalina.webresources.JarContents this
        start local 1 // java.lang.String path
        start local 2 // java.lang.String webappRoot
         0: .line 120
            iconst_0
            istore 3 /* startPos */
        start local 3 // int startPos
         1: .line 121
            aload 1 /* path */
            aload 2 /* webappRoot */
            invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
            ifeq 3
         2: .line 122
            aload 2 /* webappRoot */
            invokevirtual java.lang.String.length:()I
            istore 3 /* startPos */
         3: .line 125
      StackMap locals: int
      StackMap stack:
            aload 1 /* path */
            iload 3 /* startPos */
            invokevirtual java.lang.String.charAt:(I)C
            bipush 47
            if_icmpne 5
         4: .line 127
            iinc 3 /* startPos */ 1
         5: .line 131
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarContents.bits1:Ljava/util/BitSet;
            aload 0 /* this */
            aload 1 /* path */
            iload 3 /* startPos */
            bipush 31
            invokevirtual org.apache.catalina.webresources.JarContents.hashcode:(Ljava/lang/String;II)I
            sipush 2048
            irem
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 8
         6: .line 132
            aload 0 /* this */
            getfield org.apache.catalina.webresources.JarContents.bits2:Ljava/util/BitSet;
            aload 0 /* this */
            aload 1 /* path */
            iload 3 /* startPos */
            bipush 17
            invokevirtual org.apache.catalina.webresources.JarContents.hashcode:(Ljava/lang/String;II)I
            sipush 2048
            irem
            invokevirtual java.util.BitSet.get:(I)Z
            ifeq 8
         7: .line 131
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         8: iconst_0
            ireturn
        end local 3 // int startPos
        end local 2 // java.lang.String webappRoot
        end local 1 // java.lang.String path
        end local 0 // org.apache.catalina.webresources.JarContents this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    9     0        this  Lorg/apache/catalina/webresources/JarContents;
            0    9     1        path  Ljava/lang/String;
            0    9     2  webappRoot  Ljava/lang/String;
            1    9     3    startPos  I
    MethodParameters:
            Name  Flags
      path        
      webappRoot  
}
SourceFile: "JarContents.java"