public abstract class org.jcodings.util.Hash<V> implements java.lang.Iterable<V>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.jcodings.util.Hash
  super_class: java.lang.Object
{
  protected org.jcodings.util.Hash$HashEntry<V>[] table;
    descriptor: [Lorg/jcodings/util/Hash$HashEntry;
    flags: (0x0004) ACC_PROTECTED
    Signature: [Lorg/jcodings/util/Hash$HashEntry<TV;>;

  protected int size;
    descriptor: I
    flags: (0x0004) ACC_PROTECTED

  private static final int[] PRIMES;
    descriptor: [I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

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

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

  protected org.jcodings.util.Hash$HashEntry<V> head;
    descriptor: Lorg/jcodings/util/Hash$HashEntry;
    flags: (0x0004) ACC_PROTECTED
    Signature: Lorg/jcodings/util/Hash$HashEntry<TV;>;

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

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

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 30
            bipush 29
            newarray 10
            dup
            iconst_0
         1: .line 31
            bipush 11
            iastore
            dup
            iconst_1
            bipush 19
            iastore
            dup
            iconst_2
            bipush 37
            iastore
            dup
            iconst_3
            bipush 67
            iastore
            dup
            iconst_4
            sipush 131
            iastore
            dup
            iconst_5
            sipush 283
            iastore
            dup
            bipush 6
            sipush 521
            iastore
            dup
            bipush 7
            sipush 1033
            iastore
            dup
            bipush 8
            sipush 2053
            iastore
            dup
            bipush 9
            sipush 4099
            iastore
            dup
            bipush 10
         2: .line 32
            sipush 8219
            iastore
            dup
            bipush 11
            sipush 16427
            iastore
            dup
            bipush 12
            ldc 32771
            iastore
            dup
            bipush 13
            ldc 65581
            iastore
            dup
            bipush 14
            ldc 131101
            iastore
            dup
            bipush 15
            ldc 262147
            iastore
            dup
            bipush 16
            ldc 524309
            iastore
            dup
            bipush 17
            ldc 1048583
            iastore
            dup
            bipush 18
         3: .line 33
            ldc 2097169
            iastore
            dup
            bipush 19
            ldc 4194319
            iastore
            dup
            bipush 20
            ldc 8388617
            iastore
            dup
            bipush 21
            ldc 16777259
            iastore
            dup
            bipush 22
            ldc 33554467
            iastore
            dup
            bipush 23
            ldc 67108879
            iastore
            dup
            bipush 24
         4: .line 34
            ldc 134217757
            iastore
            dup
            bipush 25
            ldc 268435459
            iastore
            dup
            bipush 26
            ldc 536870923
            iastore
            dup
            bipush 27
            ldc 1073741909
            iastore
         5: .line 30
            putstatic org.jcodings.util.Hash.PRIMES:[I
         6: .line 37
            getstatic org.jcodings.util.Hash.PRIMES:[I
            iconst_0
            iaload
            putstatic org.jcodings.util.Hash.INITIAL_CAPACITY:I
         7: .line 131
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.jcodings.util.Hash this
         0: .line 40
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 41
            aload 0 /* this */
            getstatic org.jcodings.util.Hash.INITIAL_CAPACITY:I
            anewarray org.jcodings.util.Hash$HashEntry
            putfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
         2: .line 42
            aload 0 /* this */
            invokevirtual org.jcodings.util.Hash.init:()V
         3: .line 43
            return
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/jcodings/util/Hash<TV;>;

  protected abstract void init();
    descriptor: ()V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT

  public void <init>(int);
    descriptor: (I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.jcodings.util.Hash this
        start local 1 // int size
         0: .line 48
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 49
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: bipush 8
            istore 3 /* n */
        start local 3 // int n
         3: goto 9
         4: .line 50
      StackMap locals: org.jcodings.util.Hash int int int
      StackMap stack:
            iload 3 /* n */
            iload 1 /* size */
            if_icmple 8
         5: .line 51
            aload 0 /* this */
            getstatic org.jcodings.util.Hash.PRIMES:[I
            iload 2 /* i */
            iaload
            anewarray org.jcodings.util.Hash$HashEntry
            putfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
         6: .line 52
            aload 0 /* this */
            invokevirtual org.jcodings.util.Hash.init:()V
         7: .line 53
            return
         8: .line 49
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
            iload 3 /* n */
            iconst_1
            ishl
            istore 3 /* n */
      StackMap locals:
      StackMap stack:
         9: iload 2 /* i */
            getstatic org.jcodings.util.Hash.PRIMES:[I
            arraylength
            if_icmplt 4
        end local 3 // int n
        end local 2 // int i
        10: .line 56
            new org.jcodings.exception.InternalException
            dup
            ldc "run out of polynomials"
            invokespecial org.jcodings.exception.InternalException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // int size
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/jcodings/util/Hash<TV;>;
            0   11     1  size  I
            2   10     2     i  I
            3   10     3     n  I
    MethodParameters:
      Name  Flags
      size  

  public final int size();
    descriptor: ()I
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.jcodings.util.Hash this
         0: .line 60
            aload 0 /* this */
            getfield org.jcodings.util.Hash.size:I
            ireturn
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jcodings/util/Hash<TV;>;

  protected final void checkResize();
    descriptor: ()V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // org.jcodings.util.Hash this
         0: .line 98
            aload 0 /* this */
            getfield org.jcodings.util.Hash.size:I
            aload 0 /* this */
            getfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
            arraylength
            if_icmpne 11
         1: .line 99
            aload 0 /* this */
            getfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
            arraylength
            iconst_1
            iadd
            istore 1 /* forSize */
        start local 1 // int forSize
         2: .line 100
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         3: bipush 8
            istore 3 /* newCapacity */
        start local 3 // int newCapacity
         4: goto 9
         5: .line 101
      StackMap locals: int int int
      StackMap stack:
            iload 3 /* newCapacity */
            iload 1 /* forSize */
            if_icmple 8
         6: .line 102
            aload 0 /* this */
            getstatic org.jcodings.util.Hash.PRIMES:[I
            iload 2 /* i */
            iaload
            invokevirtual org.jcodings.util.Hash.resize:(I)V
         7: .line 103
            return
         8: .line 100
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
            iload 3 /* newCapacity */
            iconst_1
            ishl
            istore 3 /* newCapacity */
      StackMap locals:
      StackMap stack:
         9: iload 2 /* i */
            getstatic org.jcodings.util.Hash.PRIMES:[I
            arraylength
            if_icmplt 5
        end local 3 // int newCapacity
        end local 2 // int i
        10: .line 106
            return
        end local 1 // int forSize
        11: .line 108
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   12     0         this  Lorg/jcodings/util/Hash<TV;>;
            2   11     1      forSize  I
            3   10     2            i  I
            4   10     3  newCapacity  I

  protected final void resize(int);
    descriptor: (I)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // org.jcodings.util.Hash this
        start local 1 // int newCapacity
         0: .line 111
            aload 0 /* this */
            getfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
            astore 2 /* oldTable */
        start local 2 // org.jcodings.util.Hash$HashEntry[] oldTable
         1: .line 112
            iload 1 /* newCapacity */
            anewarray org.jcodings.util.Hash$HashEntry
            astore 3 /* newTable */
        start local 3 // org.jcodings.util.Hash$HashEntry[] newTable
         2: .line 113
            iconst_0
            istore 4 /* j */
        start local 4 // int j
         3: goto 14
         4: .line 114
      StackMap locals: org.jcodings.util.Hash$HashEntry[] org.jcodings.util.Hash$HashEntry[] int
      StackMap stack:
            aload 2 /* oldTable */
            iload 4 /* j */
            aaload
            astore 5 /* entry */
        start local 5 // org.jcodings.util.Hash$HashEntry entry
         5: .line 115
            aload 2 /* oldTable */
            iload 4 /* j */
            aconst_null
            aastore
         6: .line 116
            goto 12
         7: .line 117
      StackMap locals: org.jcodings.util.Hash$HashEntry
      StackMap stack:
            aload 5 /* entry */
            getfield org.jcodings.util.Hash$HashEntry.next:Lorg/jcodings/util/Hash$HashEntry;
            astore 6 /* next */
        start local 6 // org.jcodings.util.Hash$HashEntry next
         8: .line 118
            aload 5 /* entry */
            getfield org.jcodings.util.Hash$HashEntry.hash:I
            iload 1 /* newCapacity */
            invokestatic org.jcodings.util.Hash.bucketIndex:(II)I
            istore 7 /* i */
        start local 7 // int i
         9: .line 119
            aload 5 /* entry */
            aload 3 /* newTable */
            iload 7 /* i */
            aaload
            putfield org.jcodings.util.Hash$HashEntry.next:Lorg/jcodings/util/Hash$HashEntry;
        10: .line 120
            aload 3 /* newTable */
            iload 7 /* i */
            aload 5 /* entry */
            aastore
        11: .line 121
            aload 6 /* next */
            astore 5 /* entry */
        end local 7 // int i
        end local 6 // org.jcodings.util.Hash$HashEntry next
        12: .line 116
      StackMap locals:
      StackMap stack:
            aload 5 /* entry */
            ifnonnull 7
        end local 5 // org.jcodings.util.Hash$HashEntry entry
        13: .line 113
            iinc 4 /* j */ 1
      StackMap locals:
      StackMap stack:
        14: iload 4 /* j */
            aload 2 /* oldTable */
            arraylength
            if_icmplt 4
        end local 4 // int j
        15: .line 124
            aload 0 /* this */
            aload 3 /* newTable */
            putfield org.jcodings.util.Hash.table:[Lorg/jcodings/util/Hash$HashEntry;
        16: .line 125
            return
        end local 3 // org.jcodings.util.Hash$HashEntry[] newTable
        end local 2 // org.jcodings.util.Hash$HashEntry[] oldTable
        end local 1 // int newCapacity
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   17     0         this  Lorg/jcodings/util/Hash<TV;>;
            0   17     1  newCapacity  I
            1   17     2     oldTable  [Lorg/jcodings/util/Hash$HashEntry;
            2   17     3     newTable  [Lorg/jcodings/util/Hash$HashEntry;
            3   15     4            j  I
            5   13     5        entry  Lorg/jcodings/util/Hash$HashEntry<TV;>;
            8   12     6         next  Lorg/jcodings/util/Hash$HashEntry<TV;>;
            9   12     7            i  I
    MethodParameters:
             Name  Flags
      newCapacity  

  protected static int bucketIndex(int, int);
    descriptor: (II)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // int h
        start local 1 // int length
         0: .line 128
            iload 0 /* h */
            iload 1 /* length */
            irem
            ireturn
        end local 1 // int length
        end local 0 // int h
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0       h  I
            0    1     1  length  I
    MethodParameters:
        Name  Flags
      h       final
      length  final

  protected static int hashValue(int);
    descriptor: (I)I
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // int h
         0: .line 133
            iload 0 /* h */
            ldc 2147483647
            iand
            ireturn
        end local 0 // int h
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     h  I
    MethodParameters:
      Name  Flags
      h     

  public java.util.Iterator<V> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jcodings.util.Hash this
         0: .line 137
            new org.jcodings.util.Hash$HashIterator
            dup
            aload 0 /* this */
            invokespecial org.jcodings.util.Hash$HashIterator.<init>:(Lorg/jcodings/util/Hash;)V
            areturn
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jcodings/util/Hash<TV;>;
    Signature: ()Ljava/util/Iterator<TV;>;

  public org.jcodings.util.Hash<V>.HashEntryIterator entryIterator();
    descriptor: ()Lorg/jcodings/util/Hash$HashEntryIterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.jcodings.util.Hash this
         0: .line 163
            new org.jcodings.util.Hash$HashEntryIterator
            dup
            aload 0 /* this */
            invokespecial org.jcodings.util.Hash$HashEntryIterator.<init>:(Lorg/jcodings/util/Hash;)V
            areturn
        end local 0 // org.jcodings.util.Hash this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/jcodings/util/Hash<TV;>;
    Signature: ()Lorg/jcodings/util/Hash<TV;>.HashEntryIterator;
}
Signature: <V:Ljava/lang/Object;>Ljava/lang/Object;Ljava/lang/Iterable<TV;>;
SourceFile: "Hash.java"
NestMembers:
  org.jcodings.util.Hash$HashEntry  org.jcodings.util.Hash$HashEntryIterator  org.jcodings.util.Hash$HashIterator
InnerClasses:
  public HashEntry = org.jcodings.util.Hash$HashEntry of org.jcodings.util.Hash
  public HashEntryIterator = org.jcodings.util.Hash$HashEntryIterator of org.jcodings.util.Hash
  public HashIterator = org.jcodings.util.Hash$HashIterator of org.jcodings.util.Hash