public abstract class com.sun.beans.util.Cache<K, V>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: com.sun.beans.util.Cache
  super_class: java.lang.Object
{
  private static final int MAXIMUM_CAPACITY;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1073741824

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

  private final com.sun.beans.util.Cache$Kind keyKind;
    descriptor: Lcom/sun/beans/util/Cache$Kind;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.sun.beans.util.Cache$Kind valueKind;
    descriptor: Lcom/sun/beans/util/Cache$Kind;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.ref.ReferenceQueue<java.lang.Object> queue;
    descriptor: Ljava/lang/ref/ReferenceQueue;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/lang/ref/ReferenceQueue<Ljava/lang/Object;>;

  private volatile com.sun.beans.util.Cache<K, V>.CacheEntry<K, V>[] table;
    descriptor: [Lcom/sun/beans/util/Cache$CacheEntry;
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
    Signature: [Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;

  private int threshold;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int size;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  public abstract V create();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: (TK;)TV;
    MethodParameters:
      Name  Flags
      key   

  public void <init>(com.sun.beans.util.Cache$Kind, com.sun.beans.util.Cache$Kind);
    descriptor: (Lcom/sun/beans/util/Cache$Kind;Lcom/sun/beans/util/Cache$Kind;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // com.sun.beans.util.Cache$Kind keyKind
        start local 2 // com.sun.beans.util.Cache$Kind valueKind
         0: .line 73
            aload 0 /* this */
            aload 1 /* keyKind */
            aload 2 /* valueKind */
            iconst_0
            invokespecial com.sun.beans.util.Cache.<init>:(Lcom/sun/beans/util/Cache$Kind;Lcom/sun/beans/util/Cache$Kind;Z)V
         1: .line 74
            return
        end local 2 // com.sun.beans.util.Cache$Kind valueKind
        end local 1 // com.sun.beans.util.Cache$Kind keyKind
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0    2     1    keyKind  Lcom/sun/beans/util/Cache$Kind;
            0    2     2  valueKind  Lcom/sun/beans/util/Cache$Kind;
    MethodParameters:
           Name  Flags
      keyKind    
      valueKind  

  public void <init>(com.sun.beans.util.Cache$Kind, com.sun.beans.util.Cache$Kind, boolean);
    descriptor: (Lcom/sun/beans/util/Cache$Kind;Lcom/sun/beans/util/Cache$Kind;Z)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // com.sun.beans.util.Cache$Kind keyKind
        start local 2 // com.sun.beans.util.Cache$Kind valueKind
        start local 3 // boolean identity
         0: .line 89
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 48
            aload 0 /* this */
            new java.lang.ref.ReferenceQueue
            dup
            invokespecial java.lang.ref.ReferenceQueue.<init>:()V
            putfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
         2: .line 50
            aload 0 /* this */
            aload 0 /* this */
            bipush 8
            invokevirtual com.sun.beans.util.Cache.newTable:(I)[Lcom/sun/beans/util/Cache$CacheEntry;
            putfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
         3: .line 51
            aload 0 /* this */
            bipush 6
            putfield com.sun.beans.util.Cache.threshold:I
         4: .line 90
            aload 1 /* keyKind */
            ldc "keyKind"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         5: .line 91
            aload 2 /* valueKind */
            ldc "valueKind"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         6: .line 92
            aload 0 /* this */
            aload 1 /* keyKind */
            putfield com.sun.beans.util.Cache.keyKind:Lcom/sun/beans/util/Cache$Kind;
         7: .line 93
            aload 0 /* this */
            aload 2 /* valueKind */
            putfield com.sun.beans.util.Cache.valueKind:Lcom/sun/beans/util/Cache$Kind;
         8: .line 94
            aload 0 /* this */
            iload 3 /* identity */
            putfield com.sun.beans.util.Cache.identity:Z
         9: .line 95
            return
        end local 3 // boolean identity
        end local 2 // com.sun.beans.util.Cache$Kind valueKind
        end local 1 // com.sun.beans.util.Cache$Kind keyKind
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   10     0       this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0   10     1    keyKind  Lcom/sun/beans/util/Cache$Kind;
            0   10     2  valueKind  Lcom/sun/beans/util/Cache$Kind;
            0   10     3   identity  Z
    MethodParameters:
           Name  Flags
      keyKind    
      valueKind  
      identity   

  public final V get();
    descriptor: (Ljava/lang/Object;)Ljava/lang/Object;
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=10, locals=8, args_size=2
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // java.lang.Object key
         0: .line 109
            aload 1 /* key */
            ldc "key"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 110
            aload 0 /* this */
            invokevirtual com.sun.beans.util.Cache.removeStaleEntries:()V
         2: .line 111
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.sun.beans.util.Cache.hash:(Ljava/lang/Object;)I
            istore 2 /* hash */
        start local 2 // int hash
         3: .line 114
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            astore 3 /* table */
        start local 3 // com.sun.beans.util.Cache$CacheEntry[] table
         4: .line 115
            aload 0 /* this */
            aload 1 /* key */
            iload 2 /* hash */
            aload 3 /* table */
            iload 2 /* hash */
            aload 3 /* table */
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            aaload
            invokevirtual com.sun.beans.util.Cache.getEntryValue:(Ljava/lang/Object;ILcom/sun/beans/util/Cache$CacheEntry;)Ljava/lang/Object;
            astore 4 /* current */
        start local 4 // java.lang.Object current
         5: .line 116
            aload 4 /* current */
            ifnull 7
         6: .line 117
            aload 4 /* current */
            areturn
         7: .line 119
      StackMap locals: int com.sun.beans.util.Cache$CacheEntry[] java.lang.Object
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            dup
            astore 5
            monitorenter
         8: .line 122
            aload 0 /* this */
            aload 1 /* key */
            iload 2 /* hash */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 2 /* hash */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            aaload
            invokevirtual com.sun.beans.util.Cache.getEntryValue:(Ljava/lang/Object;ILcom/sun/beans/util/Cache$CacheEntry;)Ljava/lang/Object;
            astore 4 /* current */
         9: .line 123
            aload 4 /* current */
            ifnull 12
        10: .line 124
            aload 4 /* current */
            aload 5
            monitorexit
        11: areturn
        12: .line 126
      StackMap locals: java.lang.ref.ReferenceQueue
      StackMap stack:
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.sun.beans.util.Cache.create:(Ljava/lang/Object;)Ljava/lang/Object;
            astore 6 /* value */
        start local 6 // java.lang.Object value
        13: .line 127
            aload 6 /* value */
            ldc "value"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
        14: .line 128
            iload 2 /* hash */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            istore 7 /* index */
        start local 7 // int index
        15: .line 129
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 7 /* index */
            new com.sun.beans.util.Cache$CacheEntry
            dup
            aload 0 /* this */
            iload 2 /* hash */
            aload 1 /* key */
            aload 6 /* value */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 7 /* index */
            aaload
            invokespecial com.sun.beans.util.Cache$CacheEntry.<init>:(Lcom/sun/beans/util/Cache;ILjava/lang/Object;Ljava/lang/Object;Lcom/sun/beans/util/Cache$CacheEntry;)V
            aastore
        16: .line 130
            aload 0 /* this */
            dup
            getfield com.sun.beans.util.Cache.size:I
            iconst_1
            iadd
            dup_x1
            putfield com.sun.beans.util.Cache.size:I
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.threshold:I
            if_icmplt 29
        17: .line 131
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            arraylength
            ldc 1073741824
            if_icmpne 20
        18: .line 132
            aload 0 /* this */
            ldc 2147483647
            putfield com.sun.beans.util.Cache.threshold:I
        19: .line 133
            goto 29
        20: .line 134
      StackMap locals: java.lang.Object int
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.beans.util.Cache.removeStaleEntries:()V
        21: .line 135
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            arraylength
            iconst_1
            ishl
            invokevirtual com.sun.beans.util.Cache.newTable:(I)[Lcom/sun/beans/util/Cache$CacheEntry;
            astore 3 /* table */
        22: .line 136
            aload 0 /* this */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            aload 3 /* table */
            invokevirtual com.sun.beans.util.Cache.transfer:([Lcom/sun/beans/util/Cache$CacheEntry;[Lcom/sun/beans/util/Cache$CacheEntry;)V
        23: .line 140
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.size:I
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.threshold:I
            iconst_2
            idiv
            if_icmplt 27
        24: .line 141
            aload 0 /* this */
            aload 3 /* table */
            putfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
        25: .line 142
            aload 0 /* this */
            dup
            getfield com.sun.beans.util.Cache.threshold:I
            iconst_1
            ishl
            putfield com.sun.beans.util.Cache.threshold:I
        26: .line 143
            goto 28
        27: .line 144
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 3 /* table */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            invokevirtual com.sun.beans.util.Cache.transfer:([Lcom/sun/beans/util/Cache$CacheEntry;[Lcom/sun/beans/util/Cache$CacheEntry;)V
        28: .line 146
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.sun.beans.util.Cache.removeStaleEntries:()V
        29: .line 149
      StackMap locals:
      StackMap stack:
            aload 6 /* value */
            aload 5
            monitorexit
        30: areturn
        end local 7 // int index
        end local 6 // java.lang.Object value
        31: .line 119
      StackMap locals: com.sun.beans.util.Cache java.lang.Object int com.sun.beans.util.Cache$CacheEntry[] java.lang.Object java.lang.ref.ReferenceQueue
      StackMap stack: java.lang.Throwable
            aload 5
            monitorexit
        32: athrow
        end local 4 // java.lang.Object current
        end local 3 // com.sun.beans.util.Cache$CacheEntry[] table
        end local 2 // int hash
        end local 1 // java.lang.Object key
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   33     0     this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0   33     1      key  TK;
            3   33     2     hash  I
            4   33     3    table  [Lcom/sun/beans/util/Cache$CacheEntry;
            5   33     4  current  TV;
           13   31     6    value  TV;
           15   31     7    index  I
      Exception table:
        from    to  target  type
           8    11      31  any
          12    30      31  any
          31    32      31  any
    Signature: (TK;)TV;
    MethodParameters:
      Name  Flags
      key   

  public final void remove();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=8, args_size=2
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // java.lang.Object key
         0: .line 159
            aload 1 /* key */
            ifnull 23
         1: .line 160
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            dup
            astore 2
            monitorenter
         2: .line 161
            aload 0 /* this */
            invokevirtual com.sun.beans.util.Cache.removeStaleEntries:()V
         3: .line 162
            aload 0 /* this */
            aload 1 /* key */
            invokevirtual com.sun.beans.util.Cache.hash:(Ljava/lang/Object;)I
            istore 3 /* hash */
        start local 3 // int hash
         4: .line 163
            iload 3 /* hash */
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            istore 4 /* index */
        start local 4 // int index
         5: .line 164
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 4 /* index */
            aaload
            astore 5 /* prev */
        start local 5 // com.sun.beans.util.Cache$CacheEntry prev
         6: .line 165
            aload 5 /* prev */
            astore 6 /* entry */
        start local 6 // com.sun.beans.util.Cache$CacheEntry entry
         7: .line 166
            goto 18
         8: .line 167
      StackMap locals: com.sun.beans.util.Cache java.lang.Object java.lang.ref.ReferenceQueue int int com.sun.beans.util.Cache$CacheEntry com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 6 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
            astore 7 /* next */
        start local 7 // com.sun.beans.util.Cache$CacheEntry next
         9: .line 168
            aload 6 /* entry */
            iload 3 /* hash */
            aload 1 /* key */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.matches:(ILjava/lang/Object;)Z
            ifeq 16
        10: .line 169
            aload 6 /* entry */
            aload 5 /* prev */
            if_acmpne 13
        11: .line 170
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 4 /* index */
            aload 7 /* next */
            aastore
        12: .line 171
            goto 14
        13: .line 172
      StackMap locals: com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 5 /* prev */
            aload 7 /* next */
            putfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
        14: .line 174
      StackMap locals:
      StackMap stack:
            aload 6 /* entry */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.unlink:()V
        15: .line 175
            goto 19
        16: .line 177
      StackMap locals:
      StackMap stack:
            aload 6 /* entry */
            astore 5 /* prev */
        17: .line 178
            aload 7 /* next */
            astore 6 /* entry */
        end local 7 // com.sun.beans.util.Cache$CacheEntry next
        18: .line 166
      StackMap locals:
      StackMap stack:
            aload 6 /* entry */
            ifnonnull 8
        end local 6 // com.sun.beans.util.Cache$CacheEntry entry
        end local 5 // com.sun.beans.util.Cache$CacheEntry prev
        end local 4 // int index
        end local 3 // int hash
        19: .line 160
      StackMap locals: com.sun.beans.util.Cache java.lang.Object java.lang.ref.ReferenceQueue
      StackMap stack:
            aload 2
            monitorexit
        20: goto 23
      StackMap locals:
      StackMap stack: java.lang.Throwable
        21: aload 2
            monitorexit
        22: athrow
        23: .line 182
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object key
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0   24     1    key  TK;
            4   19     3   hash  I
            5   19     4  index  I
            6   19     5   prev  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
            7   19     6  entry  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
            9   18     7   next  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
      Exception table:
        from    to  target  type
           2    20      21  any
          21    22      21  any
    Signature: (TK;)V
    MethodParameters:
      Name  Flags
      key   

  public final void clear();
    descriptor: ()V
    flags: (0x0011) ACC_PUBLIC, ACC_FINAL
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // com.sun.beans.util.Cache this
         0: .line 189
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            dup
            astore 1
            monitorenter
         1: .line 190
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            arraylength
            istore 2 /* index */
        start local 2 // int index
         2: .line 191
            goto 10
         3: .line 192
      StackMap locals: java.lang.ref.ReferenceQueue int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 2 /* index */
            aaload
            astore 3 /* entry */
        start local 3 // com.sun.beans.util.Cache$CacheEntry entry
         4: .line 193
            goto 8
         5: .line 194
      StackMap locals: com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 3 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
            astore 4 /* next */
        start local 4 // com.sun.beans.util.Cache$CacheEntry next
         6: .line 195
            aload 3 /* entry */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.unlink:()V
         7: .line 196
            aload 4 /* next */
            astore 3 /* entry */
        end local 4 // com.sun.beans.util.Cache$CacheEntry next
         8: .line 193
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            ifnonnull 5
         9: .line 198
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 2 /* index */
            aconst_null
            aastore
        end local 3 // com.sun.beans.util.Cache$CacheEntry entry
        10: .line 191
      StackMap locals:
      StackMap stack:
            iload 2 /* index */
            iinc 2 /* index */ -1
            ifgt 3
        11: .line 200
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            ifnonnull 11
        end local 2 // int index
        12: .line 189
            aload 1
            monitorexit
        13: goto 16
      StackMap locals: com.sun.beans.util.Cache java.lang.ref.ReferenceQueue
      StackMap stack: java.lang.Throwable
        14: aload 1
            monitorexit
        15: athrow
        16: .line 204
      StackMap locals:
      StackMap stack:
            return
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   17     0   this  Lcom/sun/beans/util/Cache<TK;TV;>;
            2   12     2  index  I
            4   10     3  entry  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
            6    8     4   next  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
      Exception table:
        from    to  target  type
           1    13      14  any
          14    15      14  any

  private int hash(java.lang.Object);
    descriptor: (Ljava/lang/Object;)I
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // java.lang.Object key
         0: .line 217
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.identity:Z
            ifeq 3
         1: .line 218
            aload 1 /* key */
            invokestatic java.lang.System.identityHashCode:(Ljava/lang/Object;)I
            istore 2 /* hash */
        start local 2 // int hash
         2: .line 219
            iload 2 /* hash */
            iconst_1
            ishl
            iload 2 /* hash */
            bipush 8
            ishl
            isub
            ireturn
        end local 2 // int hash
         3: .line 221
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            invokevirtual java.lang.Object.hashCode:()I
            istore 2 /* hash */
        start local 2 // int hash
         4: .line 225
            iload 2 /* hash */
            iload 2 /* hash */
            bipush 20
            iushr
            iload 2 /* hash */
            bipush 12
            iushr
            ixor
            ixor
            istore 2 /* hash */
         5: .line 226
            iload 2 /* hash */
            iload 2 /* hash */
            bipush 7
            iushr
            ixor
            iload 2 /* hash */
            iconst_4
            iushr
            ixor
            ireturn
        end local 2 // int hash
        end local 1 // java.lang.Object key
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0    6     1   key  Ljava/lang/Object;
            2    3     2  hash  I
            4    6     2  hash  I
    MethodParameters:
      Name  Flags
      key   

  private static int index(int, java.lang.Object[]);
    descriptor: (I[Ljava/lang/Object;)I
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // int hash
        start local 1 // java.lang.Object[] table
         0: .line 238
            iload 0 /* hash */
            aload 1 /* table */
            arraylength
            iconst_1
            isub
            iand
            ireturn
        end local 1 // java.lang.Object[] table
        end local 0 // int hash
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   hash  I
            0    1     1  table  [Ljava/lang/Object;
    MethodParameters:
       Name  Flags
      hash   
      table  

  private com.sun.beans.util.Cache<K, V>.CacheEntry<K, V>[] newTable(int);
    descriptor: (I)[Lcom/sun/beans/util/Cache$CacheEntry;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // int size
         0: .line 249
            iload 1 /* size */
            anewarray com.sun.beans.util.Cache$CacheEntry
            areturn
        end local 1 // int size
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0    1     1  size  I
    Signature: (I)[Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
    MethodParameters:
      Name  Flags
      size  

  private V getEntryValue(K, int, com.sun.beans.util.Cache<K, V>.CacheEntry<K, V>);
    descriptor: (Ljava/lang/Object;ILcom/sun/beans/util/Cache$CacheEntry;)Ljava/lang/Object;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // java.lang.Object key
        start local 2 // int hash
        start local 3 // com.sun.beans.util.Cache$CacheEntry entry
         0: .line 253
            goto 4
         1: .line 254
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            iload 2 /* hash */
            aload 1 /* key */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.matches:(ILjava/lang/Object;)Z
            ifeq 3
         2: .line 255
            aload 3 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.value:Lcom/sun/beans/util/Cache$Ref;
            invokeinterface com.sun.beans.util.Cache$Ref.getReferent:()Ljava/lang/Object;
            areturn
         3: .line 257
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
            astore 3 /* entry */
         4: .line 253
      StackMap locals:
      StackMap stack:
            aload 3 /* entry */
            ifnonnull 1
         5: .line 259
            aconst_null
            areturn
        end local 3 // com.sun.beans.util.Cache$CacheEntry entry
        end local 2 // int hash
        end local 1 // java.lang.Object key
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0    6     1    key  TK;
            0    6     2   hash  I
            0    6     3  entry  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
    Signature: (TK;ILcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;)TV;
    MethodParameters:
       Name  Flags
      key    
      hash   
      entry  

  private void removeStaleEntries();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=1
        start local 0 // com.sun.beans.util.Cache this
         0: .line 263
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            astore 1 /* reference */
        start local 1 // java.lang.Object reference
         1: .line 264
            aload 1 /* reference */
            ifnull 28
         2: .line 265
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            dup
            astore 2
            monitorenter
         3: .line 267
      StackMap locals: java.lang.Object java.lang.ref.ReferenceQueue
      StackMap stack:
            aload 1 /* reference */
            instanceof com.sun.beans.util.Cache$Ref
            ifeq 22
         4: .line 269
            aload 1 /* reference */
            checkcast com.sun.beans.util.Cache$Ref
            astore 3 /* ref */
        start local 3 // com.sun.beans.util.Cache$Ref ref
         5: .line 271
            aload 3 /* ref */
            invokeinterface com.sun.beans.util.Cache$Ref.getOwner:()Ljava/lang/Object;
            checkcast com.sun.beans.util.Cache$CacheEntry
            astore 4 /* owner */
        start local 4 // com.sun.beans.util.Cache$CacheEntry owner
         6: .line 272
            aload 4 /* owner */
            ifnull 22
         7: .line 273
            aload 4 /* owner */
            getfield com.sun.beans.util.Cache$CacheEntry.hash:I
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            istore 5 /* index */
        start local 5 // int index
         8: .line 274
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 5 /* index */
            aaload
            astore 6 /* prev */
        start local 6 // com.sun.beans.util.Cache$CacheEntry prev
         9: .line 275
            aload 6 /* prev */
            astore 7 /* entry */
        start local 7 // com.sun.beans.util.Cache$CacheEntry entry
        10: .line 276
            goto 21
        11: .line 277
      StackMap locals: com.sun.beans.util.Cache java.lang.Object java.lang.ref.ReferenceQueue com.sun.beans.util.Cache$Ref com.sun.beans.util.Cache$CacheEntry int com.sun.beans.util.Cache$CacheEntry com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 7 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
            astore 8 /* next */
        start local 8 // com.sun.beans.util.Cache$CacheEntry next
        12: .line 278
            aload 7 /* entry */
            aload 4 /* owner */
            if_acmpne 19
        13: .line 279
            aload 7 /* entry */
            aload 6 /* prev */
            if_acmpne 16
        14: .line 280
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.table:[Lcom/sun/beans/util/Cache$CacheEntry;
            iload 5 /* index */
            aload 8 /* next */
            aastore
        15: .line 281
            goto 17
        16: .line 282
      StackMap locals: com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 6 /* prev */
            aload 8 /* next */
            putfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
        17: .line 284
      StackMap locals:
      StackMap stack:
            aload 7 /* entry */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.unlink:()V
        18: .line 285
            goto 22
        19: .line 287
      StackMap locals:
      StackMap stack:
            aload 7 /* entry */
            astore 6 /* prev */
        20: .line 288
            aload 8 /* next */
            astore 7 /* entry */
        end local 8 // com.sun.beans.util.Cache$CacheEntry next
        21: .line 276
      StackMap locals:
      StackMap stack:
            aload 7 /* entry */
            ifnonnull 11
        end local 7 // com.sun.beans.util.Cache$CacheEntry entry
        end local 6 // com.sun.beans.util.Cache$CacheEntry prev
        end local 5 // int index
        end local 4 // com.sun.beans.util.Cache$CacheEntry owner
        end local 3 // com.sun.beans.util.Cache$Ref ref
        22: .line 292
      StackMap locals: com.sun.beans.util.Cache java.lang.Object java.lang.ref.ReferenceQueue
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.beans.util.Cache.queue:Ljava/lang/ref/ReferenceQueue;
            invokevirtual java.lang.ref.ReferenceQueue.poll:()Ljava/lang/ref/Reference;
            astore 1 /* reference */
        23: .line 294
            aload 1 /* reference */
            ifnonnull 3
        24: .line 265
            aload 2
            monitorexit
        25: goto 28
      StackMap locals:
      StackMap stack: java.lang.Throwable
        26: aload 2
            monitorexit
        27: athrow
        28: .line 297
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Object reference
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   29     0       this  Lcom/sun/beans/util/Cache<TK;TV;>;
            1   29     1  reference  Ljava/lang/Object;
            5   22     3        ref  Lcom/sun/beans/util/Cache$Ref;
            6   22     4      owner  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
            8   22     5      index  I
            9   22     6       prev  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
           10   22     7      entry  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
           12   21     8       next  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
      Exception table:
        from    to  target  type
           3    25      26  any
          26    27      26  any

  private void transfer(com.sun.beans.util.Cache<K, V>.CacheEntry<K, V>[], com.sun.beans.util.Cache<K, V>.CacheEntry<K, V>[]);
    descriptor: ([Lcom/sun/beans/util/Cache$CacheEntry;[Lcom/sun/beans/util/Cache$CacheEntry;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // com.sun.beans.util.Cache this
        start local 1 // com.sun.beans.util.Cache$CacheEntry[] oldTable
        start local 2 // com.sun.beans.util.Cache$CacheEntry[] newTable
         0: .line 300
            aload 1 /* oldTable */
            arraylength
            istore 3 /* oldIndex */
        start local 3 // int oldIndex
         1: .line 301
            goto 14
         2: .line 302
      StackMap locals: int
      StackMap stack:
            aload 1 /* oldTable */
            iload 3 /* oldIndex */
            aaload
            astore 4 /* entry */
        start local 4 // com.sun.beans.util.Cache$CacheEntry entry
         3: .line 303
            aload 1 /* oldTable */
            iload 3 /* oldIndex */
            aconst_null
            aastore
         4: .line 304
            goto 13
         5: .line 305
      StackMap locals: com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 4 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
            astore 5 /* next */
        start local 5 // com.sun.beans.util.Cache$CacheEntry next
         6: .line 306
            aload 4 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.key:Lcom/sun/beans/util/Cache$Ref;
            invokeinterface com.sun.beans.util.Cache$Ref.isStale:()Z
            ifne 7
            aload 4 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.value:Lcom/sun/beans/util/Cache$Ref;
            invokeinterface com.sun.beans.util.Cache$Ref.isStale:()Z
            ifeq 9
         7: .line 307
      StackMap locals: com.sun.beans.util.Cache$CacheEntry
      StackMap stack:
            aload 4 /* entry */
            invokevirtual com.sun.beans.util.Cache$CacheEntry.unlink:()V
         8: .line 308
            goto 12
         9: .line 309
      StackMap locals:
      StackMap stack:
            aload 4 /* entry */
            getfield com.sun.beans.util.Cache$CacheEntry.hash:I
            aload 2 /* newTable */
            invokestatic com.sun.beans.util.Cache.index:(I[Ljava/lang/Object;)I
            istore 6 /* newIndex */
        start local 6 // int newIndex
        10: .line 310
            aload 4 /* entry */
            aload 2 /* newTable */
            iload 6 /* newIndex */
            aaload
            putfield com.sun.beans.util.Cache$CacheEntry.next:Lcom/sun/beans/util/Cache$CacheEntry;
        11: .line 311
            aload 2 /* newTable */
            iload 6 /* newIndex */
            aload 4 /* entry */
            aastore
        end local 6 // int newIndex
        12: .line 313
      StackMap locals:
      StackMap stack:
            aload 5 /* next */
            astore 4 /* entry */
        end local 5 // com.sun.beans.util.Cache$CacheEntry next
        13: .line 304
      StackMap locals:
      StackMap stack:
            aload 4 /* entry */
            ifnonnull 5
        end local 4 // com.sun.beans.util.Cache$CacheEntry entry
        14: .line 301
      StackMap locals:
      StackMap stack:
            iload 3 /* oldIndex */
            iinc 3 /* oldIndex */ -1
            ifgt 2
        15: .line 316
            return
        end local 3 // int oldIndex
        end local 2 // com.sun.beans.util.Cache$CacheEntry[] newTable
        end local 1 // com.sun.beans.util.Cache$CacheEntry[] oldTable
        end local 0 // com.sun.beans.util.Cache this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   16     0      this  Lcom/sun/beans/util/Cache<TK;TV;>;
            0   16     1  oldTable  [Lcom/sun/beans/util/Cache$CacheEntry;
            0   16     2  newTable  [Lcom/sun/beans/util/Cache$CacheEntry;
            1   16     3  oldIndex  I
            3   14     4     entry  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
            6   13     5      next  Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;
           10   12     6  newIndex  I
    Signature: ([Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;[Lcom/sun/beans/util/Cache<TK;TV;>.CacheEntry<TK;TV;>;)V
    MethodParameters:
          Name  Flags
      oldTable  
      newTable  
}
Signature: <K:Ljava/lang/Object;V:Ljava/lang/Object;>Ljava/lang/Object;
SourceFile: "Cache.java"
NestMembers:
  com.sun.beans.util.Cache$CacheEntry  com.sun.beans.util.Cache$Kind  com.sun.beans.util.Cache$Kind$1  com.sun.beans.util.Cache$Kind$2  com.sun.beans.util.Cache$Kind$3  com.sun.beans.util.Cache$Kind$Soft  com.sun.beans.util.Cache$Kind$Strong  com.sun.beans.util.Cache$Kind$Weak  com.sun.beans.util.Cache$Ref
InnerClasses:
  private final CacheEntry = com.sun.beans.util.Cache$CacheEntry of com.sun.beans.util.Cache
  public abstract Kind = com.sun.beans.util.Cache$Kind of com.sun.beans.util.Cache
  private abstract Ref = com.sun.beans.util.Cache$Ref of com.sun.beans.util.Cache