final class com.google.common.hash.BloomFilterStrategies$LockFreeBitArray
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray
  super_class: java.lang.Object
{
  private static final int LONG_ADDRESSABLE_BITS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  final java.util.concurrent.atomic.AtomicLongArray data;
    descriptor: Ljava/util/concurrent/atomic/AtomicLongArray;
    flags: (0x0010) ACC_FINAL

  private final com.google.common.hash.LongAddable bitCount;
    descriptor: Lcom/google/common/hash/LongAddable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(long);
    descriptor: (J)V
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // long bits
         0: .line 154
            aload 0 /* this */
            lload 1 /* bits */
            ldc 64
            getstatic java.math.RoundingMode.CEILING:Ljava/math/RoundingMode;
            invokestatic com.google.common.math.LongMath.divide:(JJLjava/math/RoundingMode;)J
            invokestatic com.google.common.primitives.Ints.checkedCast:(J)I
            newarray 11
            invokespecial com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.<init>:([J)V
         1: .line 155
            return
        end local 1 // long bits
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0    2     1  bits  J
    MethodParameters:
      Name  Flags
      bits  

  void <init>(long[]);
    descriptor: ([J)V
    flags: (0x0000) 
    Code:
      stack=4, locals=9, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // long[] data
         0: .line 158
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 159
            aload 1 /* data */
            arraylength
            ifle 2
            iconst_1
            goto 3
      StackMap locals: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray long[]
      StackMap stack:
         2: iconst_0
      StackMap locals:
      StackMap stack: int
         3: ldc "data length is zero!"
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         4: .line 160
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLongArray
            dup
            aload 1 /* data */
            invokespecial java.util.concurrent.atomic.AtomicLongArray.<init>:([J)V
            putfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
         5: .line 161
            aload 0 /* this */
            invokestatic com.google.common.hash.LongAddables.create:()Lcom/google/common/hash/LongAddable;
            putfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.bitCount:Lcom/google/common/hash/LongAddable;
         6: .line 162
            lconst_0
            lstore 2 /* bitCount */
        start local 2 // long bitCount
         7: .line 163
            aload 1 /* data */
            dup
            astore 8
            arraylength
            istore 7
            iconst_0
            istore 6
            goto 11
      StackMap locals: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray long[] long top top int int long[]
      StackMap stack:
         8: aload 8
            iload 6
            laload
            lstore 4 /* value */
        start local 4 // long value
         9: .line 164
            lload 2 /* bitCount */
            lload 4 /* value */
            invokestatic java.lang.Long.bitCount:(J)I
            i2l
            ladd
            lstore 2 /* bitCount */
        end local 4 // long value
        10: .line 163
            iinc 6 1
      StackMap locals:
      StackMap stack:
        11: iload 6
            iload 7
            if_icmplt 8
        12: .line 166
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.bitCount:Lcom/google/common/hash/LongAddable;
            lload 2 /* bitCount */
            invokeinterface com.google.common.hash.LongAddable.add:(J)V
        13: .line 167
            return
        end local 2 // long bitCount
        end local 1 // long[] data
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   14     0      this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0   14     1      data  [J
            7   14     2  bitCount  J
            9   10     4     value  J
    MethodParameters:
      Name  Flags
      data  

  boolean set(long);
    descriptor: (J)Z
    flags: (0x0000) 
    Code:
      stack=6, locals=10, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // long bitIndex
         0: .line 171
            aload 0 /* this */
            lload 1 /* bitIndex */
            invokevirtual com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.get:(J)Z
            ifeq 2
         1: .line 172
            iconst_0
            ireturn
         2: .line 175
      StackMap locals:
      StackMap stack:
            lload 1 /* bitIndex */
            bipush 6
            lushr
            l2i
            istore 3 /* longIndex */
        start local 3 // int longIndex
         3: .line 176
            lconst_1
            lload 1 /* bitIndex */
            l2i
            lshl
            lstore 4 /* mask */
        start local 4 // long mask
         4: .line 181
      StackMap locals: int long
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            iload 3 /* longIndex */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.get:(I)J
            lstore 6 /* oldValue */
        start local 6 // long oldValue
         5: .line 182
            lload 6 /* oldValue */
            lload 4 /* mask */
            lor
            lstore 8 /* newValue */
        start local 8 // long newValue
         6: .line 183
            lload 6 /* oldValue */
            lload 8 /* newValue */
            lcmp
            ifne 8
         7: .line 184
            iconst_0
            ireturn
         8: .line 186
      StackMap locals: long long
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            iload 3 /* longIndex */
            lload 6 /* oldValue */
            lload 8 /* newValue */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.compareAndSet:(IJJ)Z
            ifeq 4
         9: .line 189
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.bitCount:Lcom/google/common/hash/LongAddable;
            invokeinterface com.google.common.hash.LongAddable.increment:()V
        10: .line 190
            iconst_1
            ireturn
        end local 8 // long newValue
        end local 6 // long oldValue
        end local 4 // long mask
        end local 3 // int longIndex
        end local 1 // long bitIndex
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   11     0       this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0   11     1   bitIndex  J
            3   11     3  longIndex  I
            4   11     4       mask  J
            5   11     6   oldValue  J
            6   11     8   newValue  J
    MethodParameters:
          Name  Flags
      bitIndex  

  boolean get(long);
    descriptor: (J)Z
    flags: (0x0000) 
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // long bitIndex
         0: .line 194
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            lload 1 /* bitIndex */
            bipush 6
            lushr
            l2i
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.get:(I)J
            lconst_1
            lload 1 /* bitIndex */
            l2i
            lshl
            land
            lconst_0
            lcmp
            ifeq 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 1 // long bitIndex
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0    2     1  bitIndex  J
    MethodParameters:
          Name  Flags
      bitIndex  

  public static long[] toPlainArray(java.util.concurrent.atomic.AtomicLongArray);
    descriptor: (Ljava/util/concurrent/atomic/AtomicLongArray;)[J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // java.util.concurrent.atomic.AtomicLongArray atomicLongArray
         0: .line 203
            aload 0 /* atomicLongArray */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
            newarray 11
            astore 1 /* array */
        start local 1 // long[] array
         1: .line 204
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 205
      StackMap locals: long[] int
      StackMap stack:
            aload 1 /* array */
            iload 2 /* i */
            aload 0 /* atomicLongArray */
            iload 2 /* i */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.get:(I)J
            lastore
         4: .line 204
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 1 /* array */
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 207
            aload 1 /* array */
            areturn
        end local 1 // long[] array
        end local 0 // java.util.concurrent.atomic.AtomicLongArray atomicLongArray
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    7     0  atomicLongArray  Ljava/util/concurrent/atomic/AtomicLongArray;
            1    7     1            array  [J
            2    6     2                i  I
    MethodParameters:
                 Name  Flags
      atomicLongArray  

  long bitSize();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
         0: .line 212
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
            i2l
            ldc 64
            lmul
            lreturn
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;

  long bitCount();
    descriptor: ()J
    flags: (0x0000) 
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
         0: .line 224
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.bitCount:Lcom/google/common/hash/LongAddable;
            invokeinterface com.google.common.hash.LongAddable.sum:()J
            lreturn
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;

  com.google.common.hash.BloomFilterStrategies$LockFreeBitArray copy();
    descriptor: ()Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
         0: .line 228
            new com.google.common.hash.BloomFilterStrategies$LockFreeBitArray
            dup
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokestatic com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.toPlainArray:(Ljava/util/concurrent/atomic/AtomicLongArray;)[J
            invokespecial com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.<init>:([J)V
            areturn
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;

  void putAll(com.google.common.hash.BloomFilterStrategies$LockFreeBitArray);
    descriptor: (Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;)V
    flags: (0x0000) 
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray other
         0: .line 242
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
            aload 1 /* other */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
            if_icmpne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
         2: .line 243
      StackMap locals:
      StackMap stack: int
            ldc "BitArrays must be of equal length (%s != %s)"
         3: .line 244
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
         4: .line 245
            aload 1 /* other */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
         5: .line 241
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/String;II)V
         6: .line 246
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         7: goto 20
         8: .line 247
      StackMap locals: int
      StackMap stack:
            aload 1 /* other */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            iload 2 /* i */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.get:(I)J
            lstore 3 /* otherLong */
        start local 3 // long otherLong
         9: .line 251
            iconst_1
            istore 9 /* changedAnyBits */
        start local 9 // boolean changedAnyBits
        10: .line 253
      StackMap locals: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray com.google.common.hash.BloomFilterStrategies$LockFreeBitArray int long top top top top int
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            iload 2 /* i */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.get:(I)J
            lstore 5 /* ourLongOld */
        start local 5 // long ourLongOld
        11: .line 254
            lload 5 /* ourLongOld */
            lload 3 /* otherLong */
            lor
            lstore 7 /* ourLongNew */
        start local 7 // long ourLongNew
        12: .line 255
            lload 5 /* ourLongOld */
            lload 7 /* ourLongNew */
            lcmp
            ifne 15
        13: .line 256
            iconst_0
            istore 9 /* changedAnyBits */
        14: .line 257
            goto 16
        15: .line 259
      StackMap locals: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray com.google.common.hash.BloomFilterStrategies$LockFreeBitArray int long long long int
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            iload 2 /* i */
            lload 5 /* ourLongOld */
            lload 7 /* ourLongNew */
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.compareAndSet:(IJJ)Z
            ifeq 10
        16: .line 261
      StackMap locals:
      StackMap stack:
            iload 9 /* changedAnyBits */
            ifeq 19
        17: .line 262
            lload 7 /* ourLongNew */
            invokestatic java.lang.Long.bitCount:(J)I
            lload 5 /* ourLongOld */
            invokestatic java.lang.Long.bitCount:(J)I
            isub
            istore 10 /* bitsAdded */
        start local 10 // int bitsAdded
        18: .line 263
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.bitCount:Lcom/google/common/hash/LongAddable;
            iload 10 /* bitsAdded */
            i2l
            invokeinterface com.google.common.hash.LongAddable.add:(J)V
        end local 10 // int bitsAdded
        end local 9 // boolean changedAnyBits
        end local 7 // long ourLongNew
        end local 5 // long ourLongOld
        end local 3 // long otherLong
        19: .line 246
      StackMap locals: com.google.common.hash.BloomFilterStrategies$LockFreeBitArray com.google.common.hash.BloomFilterStrategies$LockFreeBitArray int
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 2 /* i */
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokevirtual java.util.concurrent.atomic.AtomicLongArray.length:()I
            if_icmplt 8
        end local 2 // int i
        21: .line 266
            return
        end local 1 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray other
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   22     0            this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0   22     1           other  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            7   21     2               i  I
            9   19     3       otherLong  J
           11   19     5      ourLongOld  J
           12   19     7      ourLongNew  J
           10   19     9  changedAnyBits  Z
           18   19    10       bitsAdded  I
    MethodParameters:
       Name  Flags
      other  

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
        start local 1 // java.lang.Object o
         0: .line 270
            aload 1 /* o */
            instanceof com.google.common.hash.BloomFilterStrategies$LockFreeBitArray
            ifeq 3
         1: .line 271
            aload 1 /* o */
            checkcast com.google.common.hash.BloomFilterStrategies$LockFreeBitArray
            astore 2 /* lockFreeBitArray */
        start local 2 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray lockFreeBitArray
         2: .line 273
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokestatic com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.toPlainArray:(Ljava/util/concurrent/atomic/AtomicLongArray;)[J
            aload 2 /* lockFreeBitArray */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokestatic com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.toPlainArray:(Ljava/util/concurrent/atomic/AtomicLongArray;)[J
            invokestatic java.util.Arrays.equals:([J[J)Z
            ireturn
        end local 2 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray lockFreeBitArray
         3: .line 275
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // java.lang.Object o
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    4     0              this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
            0    4     1                 o  Ljava/lang/Object;
            2    3     2  lockFreeBitArray  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
    RuntimeVisibleTypeAnnotations: 
      METHOD_FORMAL_PARAMETER
        org.checkerframework.checker.nullness.qual.Nullable()
    MethodParameters:
      Name  Flags
      o     

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
         0: .line 281
            aload 0 /* this */
            getfield com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.data:Ljava/util/concurrent/atomic/AtomicLongArray;
            invokestatic com.google.common.hash.BloomFilterStrategies$LockFreeBitArray.toPlainArray:(Ljava/util/concurrent/atomic/AtomicLongArray;)[J
            invokestatic java.util.Arrays.hashCode:([J)I
            ireturn
        end local 0 // com.google.common.hash.BloomFilterStrategies$LockFreeBitArray this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/hash/BloomFilterStrategies$LockFreeBitArray;
}
SourceFile: "BloomFilterStrategies.java"
NestHost: com.google.common.hash.BloomFilterStrategies
InnerClasses:
  final LockFreeBitArray = com.google.common.hash.BloomFilterStrategies$LockFreeBitArray of com.google.common.hash.BloomFilterStrategies