public class org.apache.cassandra.utils.FilterFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.FilterFactory
  super_class: java.lang.Object
{
  public static final org.apache.cassandra.utils.IFilter AlwaysPresent;
    descriptor: Lorg/apache/cassandra/utils/IFilter;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final long BITSET_EXCESS;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 31
            ldc Lorg/apache/cassandra/utils/FilterFactory;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.utils.FilterFactory.$assertionsDisabled:Z
         3: .line 33
            new org.apache.cassandra.utils.AlwaysPresentFilter
            dup
            invokespecial org.apache.cassandra.utils.AlwaysPresentFilter.<init>:()V
            putstatic org.apache.cassandra.utils.FilterFactory.AlwaysPresent:Lorg/apache/cassandra/utils/IFilter;
         4: .line 35
            ldc Lorg/apache/cassandra/utils/FilterFactory;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.utils.FilterFactory.logger:Lorg/slf4j/Logger;
         5: .line 36
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.FilterFactory this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.utils.FilterFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/FilterFactory;

  public static void serialize(org.apache.cassandra.utils.IFilter, org.apache.cassandra.io.util.DataOutputPlus);
    descriptor: (Lorg/apache/cassandra/utils/IFilter;Lorg/apache/cassandra/io/util/DataOutputPlus;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.IFilter bf
        start local 1 // org.apache.cassandra.io.util.DataOutputPlus output
         0: .line 40
            aload 0 /* bf */
            checkcast org.apache.cassandra.utils.BloomFilter
            aload 1 /* output */
            invokestatic org.apache.cassandra.utils.BloomFilterSerializer.serialize:(Lorg/apache/cassandra/utils/BloomFilter;Lorg/apache/cassandra/io/util/DataOutputPlus;)V
         1: .line 41
            return
        end local 1 // org.apache.cassandra.io.util.DataOutputPlus output
        end local 0 // org.apache.cassandra.utils.IFilter bf
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0      bf  Lorg/apache/cassandra/utils/IFilter;
            0    2     1  output  Lorg/apache/cassandra/io/util/DataOutputPlus;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      bf      
      output  

  public static org.apache.cassandra.utils.IFilter deserialize(java.io.DataInput, boolean, boolean);
    descriptor: (Ljava/io/DataInput;ZZ)Lorg/apache/cassandra/utils/IFilter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // java.io.DataInput input
        start local 1 // boolean offheap
        start local 2 // boolean oldBfHashOrder
         0: .line 45
            aload 0 /* input */
            iload 1 /* offheap */
            iload 2 /* oldBfHashOrder */
            invokestatic org.apache.cassandra.utils.BloomFilterSerializer.deserialize:(Ljava/io/DataInput;ZZ)Lorg/apache/cassandra/utils/BloomFilter;
            areturn
        end local 2 // boolean oldBfHashOrder
        end local 1 // boolean offheap
        end local 0 // java.io.DataInput input
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0           input  Ljava/io/DataInput;
            0    1     1         offheap  Z
            0    1     2  oldBfHashOrder  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                Name  Flags
      input           
      offheap         
      oldBfHashOrder  

  public static org.apache.cassandra.utils.IFilter getFilter(long, int, boolean, boolean);
    descriptor: (JIZZ)Lorg/apache/cassandra/utils/IFilter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // long numElements
        start local 2 // int targetBucketsPerElem
        start local 3 // boolean offheap
        start local 4 // boolean oldBfHashOrder
         0: .line 54
            iconst_1
            lload 0 /* numElements */
            invokestatic org.apache.cassandra.utils.BloomCalculations.maxBucketsPerElement:(J)I
            invokestatic java.lang.Math.max:(II)I
            istore 5 /* maxBucketsPerElement */
        start local 5 // int maxBucketsPerElement
         1: .line 55
            iload 2 /* targetBucketsPerElem */
            iload 5 /* maxBucketsPerElement */
            invokestatic java.lang.Math.min:(II)I
            istore 6 /* bucketsPerElement */
        start local 6 // int bucketsPerElement
         2: .line 56
            iload 6 /* bucketsPerElement */
            iload 2 /* targetBucketsPerElem */
            if_icmpge 4
         3: .line 58
            getstatic org.apache.cassandra.utils.FilterFactory.logger:Lorg/slf4j/Logger;
            ldc "Cannot provide an optimal BloomFilter for {} elements ({}/{} buckets per element)."
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            lload 0 /* numElements */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            iload 6 /* bucketsPerElement */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_2
            iload 2 /* targetBucketsPerElem */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 60
      StackMap locals: int int
      StackMap stack:
            iload 6 /* bucketsPerElement */
            invokestatic org.apache.cassandra.utils.BloomCalculations.computeBloomSpec:(I)Lorg/apache/cassandra/utils/BloomCalculations$BloomSpecification;
            astore 7 /* spec */
        start local 7 // org.apache.cassandra.utils.BloomCalculations$BloomSpecification spec
         5: .line 61
            aload 7 /* spec */
            getfield org.apache.cassandra.utils.BloomCalculations$BloomSpecification.K:I
            lload 0 /* numElements */
            aload 7 /* spec */
            getfield org.apache.cassandra.utils.BloomCalculations$BloomSpecification.bucketsPerElement:I
            iload 3 /* offheap */
            iload 4 /* oldBfHashOrder */
            invokestatic org.apache.cassandra.utils.FilterFactory.createFilter:(IJIZZ)Lorg/apache/cassandra/utils/IFilter;
            areturn
        end local 7 // org.apache.cassandra.utils.BloomCalculations$BloomSpecification spec
        end local 6 // int bucketsPerElement
        end local 5 // int maxBucketsPerElement
        end local 4 // boolean oldBfHashOrder
        end local 3 // boolean offheap
        end local 2 // int targetBucketsPerElem
        end local 0 // long numElements
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0    6     0           numElements  J
            0    6     2  targetBucketsPerElem  I
            0    6     3               offheap  Z
            0    6     4        oldBfHashOrder  Z
            1    6     5  maxBucketsPerElement  I
            2    6     6     bucketsPerElement  I
            5    6     7                  spec  Lorg/apache/cassandra/utils/BloomCalculations$BloomSpecification;
    MethodParameters:
                      Name  Flags
      numElements           
      targetBucketsPerElem  
      offheap               
      oldBfHashOrder        

  public static org.apache.cassandra.utils.IFilter getFilter(long, double, boolean, boolean);
    descriptor: (JDZZ)Lorg/apache/cassandra/utils/IFilter;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // long numElements
        start local 2 // double maxFalsePosProbability
        start local 4 // boolean offheap
        start local 5 // boolean oldBfHashOrder
         0: .line 73
            getstatic org.apache.cassandra.utils.FilterFactory.$assertionsDisabled:Z
            ifne 1
            dload 2 /* maxFalsePosProbability */
            dconst_1
            dcmpg
            ifle 1
            new java.lang.AssertionError
            dup
            ldc "Invalid probability"
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 74
      StackMap locals:
      StackMap stack:
            dload 2 /* maxFalsePosProbability */
            dconst_1
            dcmpl
            ifne 3
         2: .line 75
            new org.apache.cassandra.utils.AlwaysPresentFilter
            dup
            invokespecial org.apache.cassandra.utils.AlwaysPresentFilter.<init>:()V
            areturn
         3: .line 76
      StackMap locals:
      StackMap stack:
            lload 0 /* numElements */
            invokestatic org.apache.cassandra.utils.BloomCalculations.maxBucketsPerElement:(J)I
            istore 6 /* bucketsPerElement */
        start local 6 // int bucketsPerElement
         4: .line 77
            iload 6 /* bucketsPerElement */
            dload 2 /* maxFalsePosProbability */
            invokestatic org.apache.cassandra.utils.BloomCalculations.computeBloomSpec:(ID)Lorg/apache/cassandra/utils/BloomCalculations$BloomSpecification;
            astore 7 /* spec */
        start local 7 // org.apache.cassandra.utils.BloomCalculations$BloomSpecification spec
         5: .line 78
            aload 7 /* spec */
            getfield org.apache.cassandra.utils.BloomCalculations$BloomSpecification.K:I
            lload 0 /* numElements */
            aload 7 /* spec */
            getfield org.apache.cassandra.utils.BloomCalculations$BloomSpecification.bucketsPerElement:I
            iload 4 /* offheap */
            iload 5 /* oldBfHashOrder */
            invokestatic org.apache.cassandra.utils.FilterFactory.createFilter:(IJIZZ)Lorg/apache/cassandra/utils/IFilter;
            areturn
        end local 7 // org.apache.cassandra.utils.BloomCalculations$BloomSpecification spec
        end local 6 // int bucketsPerElement
        end local 5 // boolean oldBfHashOrder
        end local 4 // boolean offheap
        end local 2 // double maxFalsePosProbability
        end local 0 // long numElements
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    6     0             numElements  J
            0    6     2  maxFalsePosProbability  D
            0    6     4                 offheap  Z
            0    6     5          oldBfHashOrder  Z
            4    6     6       bucketsPerElement  I
            5    6     7                    spec  Lorg/apache/cassandra/utils/BloomCalculations$BloomSpecification;
    MethodParameters:
                        Name  Flags
      numElements             
      maxFalsePosProbability  
      offheap                 
      oldBfHashOrder          

  private static org.apache.cassandra.utils.IFilter createFilter(int, long, int, boolean, boolean);
    descriptor: (IJIZZ)Lorg/apache/cassandra/utils/IFilter;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // int hash
        start local 1 // long numElements
        start local 3 // int bucketsPer
        start local 4 // boolean offheap
        start local 5 // boolean oldBfHashOrder
         0: .line 84
            lload 1 /* numElements */
            iload 3 /* bucketsPer */
            i2l
            lmul
            ldc 20
            ladd
            lstore 6 /* numBits */
        start local 6 // long numBits
         1: .line 85
            iload 4 /* offheap */
            ifeq 2
            new org.apache.cassandra.utils.obs.OffHeapBitSet
            dup
            lload 6 /* numBits */
            invokespecial org.apache.cassandra.utils.obs.OffHeapBitSet.<init>:(J)V
            goto 3
      StackMap locals: long
      StackMap stack:
         2: new org.apache.cassandra.utils.obs.OpenBitSet
            dup
            lload 6 /* numBits */
            invokespecial org.apache.cassandra.utils.obs.OpenBitSet.<init>:(J)V
      StackMap locals:
      StackMap stack: org.apache.cassandra.utils.obs.IBitSet
         3: astore 8 /* bitset */
        start local 8 // org.apache.cassandra.utils.obs.IBitSet bitset
         4: .line 86
            new org.apache.cassandra.utils.BloomFilter
            dup
            iload 0 /* hash */
            aload 8 /* bitset */
            iload 5 /* oldBfHashOrder */
            invokespecial org.apache.cassandra.utils.BloomFilter.<init>:(ILorg/apache/cassandra/utils/obs/IBitSet;Z)V
            areturn
        end local 8 // org.apache.cassandra.utils.obs.IBitSet bitset
        end local 6 // long numBits
        end local 5 // boolean oldBfHashOrder
        end local 4 // boolean offheap
        end local 3 // int bucketsPer
        end local 1 // long numElements
        end local 0 // int hash
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            hash  I
            0    5     1     numElements  J
            0    5     3      bucketsPer  I
            0    5     4         offheap  Z
            0    5     5  oldBfHashOrder  Z
            1    5     6         numBits  J
            4    5     8          bitset  Lorg/apache/cassandra/utils/obs/IBitSet;
    MethodParameters:
                Name  Flags
      hash            
      numElements     
      bucketsPer      
      offheap         
      oldBfHashOrder  
}
SourceFile: "FilterFactory.java"
InnerClasses:
  public BloomSpecification = org.apache.cassandra.utils.BloomCalculations$BloomSpecification of org.apache.cassandra.utils.BloomCalculations