public class org.apache.cassandra.utils.HistogramBuilder
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.HistogramBuilder
  super_class: java.lang.Object
{
  public static final long[] EMPTY_LONG_ARRAY;
    descriptor: [J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final long[] ZERO;
    descriptor: [J
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private long[] values;
    descriptor: [J
    flags: (0x0002) ACC_PRIVATE

  int count;
    descriptor: I
    flags: (0x0000) 

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 28
            iconst_0
            newarray 11
            putstatic org.apache.cassandra.utils.HistogramBuilder.EMPTY_LONG_ARRAY:[J
         1: .line 29
            iconst_1
            newarray 11
            putstatic org.apache.cassandra.utils.HistogramBuilder.ZERO:[J
            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.apache.cassandra.utils.HistogramBuilder this
         0: .line 31
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            bipush 10
            newarray 11
            putfield org.apache.cassandra.utils.HistogramBuilder.values:[J
         2: .line 41
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.utils.HistogramBuilder.count:I
         3: .line 31
            return
        end local 0 // org.apache.cassandra.utils.HistogramBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/utils/HistogramBuilder;

  public void <init>(long[]);
    descriptor: ([J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // org.apache.cassandra.utils.HistogramBuilder this
        start local 1 // long[] values
         0: .line 32
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 40
            aload 0 /* this */
            bipush 10
            newarray 11
            putfield org.apache.cassandra.utils.HistogramBuilder.values:[J
         2: .line 41
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.utils.HistogramBuilder.count:I
         3: .line 34
            aload 1 /* values */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 7
      StackMap locals: org.apache.cassandra.utils.HistogramBuilder long[] top top int int long[]
      StackMap stack:
         4: aload 6
            iload 4
            laload
            lstore 2 /* value */
        start local 2 // long value
         5: .line 36
            aload 0 /* this */
            lload 2 /* value */
            invokevirtual org.apache.cassandra.utils.HistogramBuilder.add:(J)V
        end local 2 // long value
         6: .line 34
            iinc 4 1
      StackMap locals:
      StackMap stack:
         7: iload 4
            iload 5
            if_icmplt 4
         8: .line 38
            return
        end local 1 // long[] values
        end local 0 // org.apache.cassandra.utils.HistogramBuilder this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    9     0    this  Lorg/apache/cassandra/utils/HistogramBuilder;
            0    9     1  values  [J
            5    6     2   value  J
    MethodParameters:
        Name  Flags
      values  

  public void add(long);
    descriptor: (J)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.apache.cassandra.utils.HistogramBuilder this
        start local 1 // long value
         0: .line 45
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.count:I
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.values:[J
            arraylength
            if_icmpne 2
         1: .line 46
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.values:[J
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.values:[J
            arraylength
            iconst_1
            ishl
            invokestatic java.util.Arrays.copyOf:([JI)[J
            putfield org.apache.cassandra.utils.HistogramBuilder.values:[J
         2: .line 47
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.values:[J
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.utils.HistogramBuilder.count:I
            dup_x1
            iconst_1
            iadd
            putfield org.apache.cassandra.utils.HistogramBuilder.count:I
            lload 1 /* value */
            lastore
         3: .line 48
            return
        end local 1 // long value
        end local 0 // org.apache.cassandra.utils.HistogramBuilder this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   this  Lorg/apache/cassandra/utils/HistogramBuilder;
            0    4     1  value  J
    MethodParameters:
       Name  Flags
      value  

  public org.apache.cassandra.utils.EstimatedHistogram buildWithStdevRangesAroundMean();
    descriptor: ()Lorg/apache/cassandra/utils/EstimatedHistogram;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.HistogramBuilder this
         0: .line 56
            aload 0 /* this */
            iconst_3
            invokevirtual org.apache.cassandra.utils.HistogramBuilder.buildWithStdevRangesAroundMean:(I)Lorg/apache/cassandra/utils/EstimatedHistogram;
            areturn
        end local 0 // org.apache.cassandra.utils.HistogramBuilder this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/HistogramBuilder;

  public org.apache.cassandra.utils.EstimatedHistogram buildWithStdevRangesAroundMean(int);
    descriptor: (I)Lorg/apache/cassandra/utils/EstimatedHistogram;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=21, args_size=2
        start local 0 // org.apache.cassandra.utils.HistogramBuilder this
        start local 1 // int maxdevs
         0: .line 72
            iload 1 /* maxdevs */
            ifge 2
         1: .line 73
            new java.lang.IllegalArgumentException
            dup
            ldc "maxdevs must be greater than or equal to zero"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 75
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.count:I
            istore 2 /* count */
        start local 2 // int count
         3: .line 76
            aload 0 /* this */
            getfield org.apache.cassandra.utils.HistogramBuilder.values:[J
            astore 3 /* values */
        start local 3 // long[] values
         4: .line 78
            iload 2 /* count */
            ifne 6
         5: .line 79
            new org.apache.cassandra.utils.EstimatedHistogram
            dup
            getstatic org.apache.cassandra.utils.HistogramBuilder.EMPTY_LONG_ARRAY:[J
            getstatic org.apache.cassandra.utils.HistogramBuilder.ZERO:[J
            invokespecial org.apache.cassandra.utils.EstimatedHistogram.<init>:([J[J)V
            areturn
         6: .line 81
      StackMap locals: int long[]
      StackMap stack:
            ldc 9223372036854775807
            lstore 4 /* min */
        start local 4 // long min
         7: ldc -9223372036854775808
            lstore 6 /* max */
        start local 6 // long max
         8: .line 82
            dconst_0
            dstore 8 /* sum */
        start local 8 // double sum
         9: dconst_0
            dstore 10 /* sumsq */
        start local 10 // double sumsq
        10: .line 83
            iconst_0
            istore 12 /* i */
        start local 12 // int i
        11: goto 20
        12: .line 85
      StackMap locals: org.apache.cassandra.utils.HistogramBuilder int int long[] long long double double int
      StackMap stack:
            aload 3 /* values */
            iload 12 /* i */
            laload
            lstore 13 /* value */
        start local 13 // long value
        13: .line 86
            dload 8 /* sum */
            lload 13 /* value */
            l2d
            dadd
            dstore 8 /* sum */
        14: .line 87
            dload 10 /* sumsq */
            lload 13 /* value */
            lload 13 /* value */
            lmul
            l2d
            dadd
            dstore 10 /* sumsq */
        15: .line 88
            lload 13 /* value */
            lload 4 /* min */
            lcmp
            ifge 17
        16: .line 89
            lload 13 /* value */
            lstore 4 /* min */
        17: .line 90
      StackMap locals: long
      StackMap stack:
            lload 13 /* value */
            lload 6 /* max */
            lcmp
            ifle 19
        18: .line 91
            lload 13 /* value */
            lstore 6 /* max */
        end local 13 // long value
        19: .line 83
      StackMap locals:
      StackMap stack:
            iinc 12 /* i */ 1
      StackMap locals:
      StackMap stack:
        20: iload 12 /* i */
            iload 2 /* count */
            if_icmplt 12
        end local 12 // int i
        21: .line 94
            dload 8 /* sum */
            iload 2 /* count */
            i2d
            ddiv
            invokestatic java.lang.Math.round:(D)J
            lstore 12 /* mean */
        start local 12 // long mean
        22: .line 96
            dload 10 /* sumsq */
            iload 2 /* count */
            i2d
            ddiv
            lload 12 /* mean */
            l2d
            lload 12 /* mean */
            l2d
            dmul
            dsub
            invokestatic java.lang.Math.sqrt:(D)D
        23: .line 95
            dstore 14 /* stdev */
        start local 14 // double stdev
        24: .line 99
            lload 12 /* mean */
            lload 4 /* min */
            iconst_1
            dload 14 /* stdev */
            iload 1 /* maxdevs */
            invokestatic org.apache.cassandra.utils.HistogramBuilder.buildRange:(JJZDI)[J
            astore 16 /* lowhalf */
        start local 16 // long[] lowhalf
        25: .line 100
            lload 12 /* mean */
            lload 6 /* max */
            iconst_0
            dload 14 /* stdev */
            iload 1 /* maxdevs */
            invokestatic org.apache.cassandra.utils.HistogramBuilder.buildRange:(JJZDI)[J
            astore 17 /* highhalf */
        start local 17 // long[] highhalf
        26: .line 103
            aload 16 /* lowhalf */
            arraylength
            aload 17 /* highhalf */
            arraylength
            iadd
            iconst_1
            iadd
            newarray 11
            astore 18 /* ranges */
        start local 18 // long[] ranges
        27: .line 104
            aload 16 /* lowhalf */
            iconst_0
            aload 18 /* ranges */
            iconst_0
            aload 16 /* lowhalf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        28: .line 105
            aload 18 /* ranges */
            aload 16 /* lowhalf */
            arraylength
            lload 12 /* mean */
            lastore
        29: .line 106
            aload 17 /* highhalf */
            iconst_0
            aload 18 /* ranges */
            aload 16 /* lowhalf */
            arraylength
            iconst_1
            iadd
            aload 17 /* highhalf */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        30: .line 108
            new org.apache.cassandra.utils.EstimatedHistogram
            dup
            aload 18 /* ranges */
            aload 18 /* ranges */
            arraylength
            iconst_1
            iadd
            newarray 11
            invokespecial org.apache.cassandra.utils.EstimatedHistogram.<init>:([J[J)V
            astore 19 /* hist */
        start local 19 // org.apache.cassandra.utils.EstimatedHistogram hist
        31: .line 109
            iconst_0
            istore 20 /* i */
        start local 20 // int i
        32: goto 35
        33: .line 110
      StackMap locals: org.apache.cassandra.utils.HistogramBuilder int int long[] long long double double long double long[] long[] long[] org.apache.cassandra.utils.EstimatedHistogram int
      StackMap stack:
            aload 19 /* hist */
            aload 3 /* values */
            iload 20 /* i */
            laload
            invokevirtual org.apache.cassandra.utils.EstimatedHistogram.add:(J)V
        34: .line 109
            iinc 20 /* i */ 1
      StackMap locals:
      StackMap stack:
        35: iload 20 /* i */
            iload 2 /* count */
            if_icmplt 33
        end local 20 // int i
        36: .line 111
            aload 19 /* hist */
            areturn
        end local 19 // org.apache.cassandra.utils.EstimatedHistogram hist
        end local 18 // long[] ranges
        end local 17 // long[] highhalf
        end local 16 // long[] lowhalf
        end local 14 // double stdev
        end local 12 // long mean
        end local 10 // double sumsq
        end local 8 // double sum
        end local 6 // long max
        end local 4 // long min
        end local 3 // long[] values
        end local 2 // int count
        end local 1 // int maxdevs
        end local 0 // org.apache.cassandra.utils.HistogramBuilder this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   37     0      this  Lorg/apache/cassandra/utils/HistogramBuilder;
            0   37     1   maxdevs  I
            3   37     2     count  I
            4   37     3    values  [J
            7   37     4       min  J
            8   37     6       max  J
            9   37     8       sum  D
           10   37    10     sumsq  D
           11   21    12         i  I
           13   19    13     value  J
           22   37    12      mean  J
           24   37    14     stdev  D
           25   37    16   lowhalf  [J
           26   37    17  highhalf  [J
           27   37    18    ranges  [J
           31   37    19      hist  Lorg/apache/cassandra/utils/EstimatedHistogram;
           32   36    20         i  I
    MethodParameters:
         Name  Flags
      maxdevs  

  private static long[] buildRange(long, long, boolean, double, int);
    descriptor: (JJZDI)[J
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=7, locals=21, args_size=5
        start local 0 // long mean
        start local 2 // long minormax
        start local 4 // boolean ismin
        start local 5 // double stdev
        start local 7 // int maxdevs
         0: .line 116
            lload 2 /* minormax */
            lload 0 /* mean */
            lcmp
            ifne 4
         1: .line 120
            iload 4 /* ismin */
            ifeq 2
            iconst_1
            newarray 11
            dup
            iconst_0
            lload 0 /* mean */
            lconst_1
            lsub
            lastore
            goto 3
      StackMap locals:
      StackMap stack:
         2: getstatic org.apache.cassandra.utils.HistogramBuilder.EMPTY_LONG_ARRAY:[J
      StackMap locals:
      StackMap stack: long[]
         3: areturn
         4: .line 122
      StackMap locals:
      StackMap stack:
            dload 5 /* stdev */
            dconst_1
            dcmpg
            ifge 8
         5: .line 125
            iload 4 /* ismin */
            ifeq 6
            iconst_2
            newarray 11
            dup
            iconst_0
            lload 2 /* minormax */
            lconst_1
            lsub
            lastore
            dup
            iconst_1
            lload 0 /* mean */
            lconst_1
            lsub
            lastore
            goto 7
         6: .line 126
      StackMap locals:
      StackMap stack:
            iconst_1
            newarray 11
            dup
            iconst_0
            lload 2 /* minormax */
            lastore
         7: .line 125
      StackMap locals:
      StackMap stack: long[]
            areturn
         8: .line 130
      StackMap locals:
      StackMap stack:
            iload 4 /* ismin */
            ifeq 11
            lload 0 /* mean */
            lstore 8 /* larger */
        start local 8 // long larger
         9: lload 2 /* minormax */
            lstore 10 /* smaller */
        start local 10 // long smaller
        10: goto 13
        end local 10 // long smaller
        end local 8 // long larger
        11: .line 131
      StackMap locals:
      StackMap stack:
            lload 2 /* minormax */
            lstore 8 /* larger */
        start local 8 // long larger
        12: lload 0 /* mean */
            lstore 10 /* smaller */
        start local 10 // long smaller
        13: .line 133
      StackMap locals: long long
      StackMap stack:
            lload 8 /* larger */
            lload 10 /* smaller */
            lsub
            l2d
            dload 5 /* stdev */
            ddiv
            dstore 12 /* stdevsTo */
        start local 12 // double stdevsTo
        14: .line 134
            dload 12 /* stdevsTo */
            dconst_0
            dcmpl
            ifle 16
            dload 12 /* stdevsTo */
            dconst_1
            dcmpg
            ifge 16
        15: .line 136
            dconst_1
            dstore 12 /* stdevsTo */
            goto 17
        16: .line 139
      StackMap locals: double
      StackMap stack:
            dload 12 /* stdevsTo */
            invokestatic java.lang.Math.round:(D)J
            l2d
            dstore 12 /* stdevsTo */
        17: .line 142
      StackMap locals:
      StackMap stack:
            iload 7 /* maxdevs */
            iconst_1
            iadd
            dload 12 /* stdevsTo */
            d2i
            invokestatic java.lang.Math.min:(II)I
            istore 14 /* len */
        start local 14 // int len
        18: .line 143
            iload 14 /* len */
            newarray 11
            astore 15 /* range */
        start local 15 // long[] range
        19: .line 144
            iload 4 /* ismin */
            ifeq 20
            lload 2 /* minormax */
            lconst_1
            lsub
            goto 21
      StackMap locals: int long[]
      StackMap stack:
        20: lload 2 /* minormax */
      StackMap locals:
      StackMap stack: long
        21: lstore 16 /* next */
        start local 16 // long next
        22: .line 145
            iconst_0
            istore 18 /* i */
        start local 18 // int i
        23: goto 32
        24: .line 147
      StackMap locals: long int
      StackMap stack:
            aload 15 /* range */
            arraylength
            iload 18 /* i */
            iconst_1
            iadd
            isub
            i2l
            dload 5 /* stdev */
            d2l
            lmul
            lstore 19 /* delta */
        start local 19 // long delta
        25: .line 148
            iload 4 /* ismin */
            ifeq 29
        26: .line 150
            aload 15 /* range */
            iload 18 /* i */
            lload 16 /* next */
            lastore
        27: .line 151
            lload 0 /* mean */
            lload 19 /* delta */
            lsub
            lstore 16 /* next */
        28: .line 152
            goto 31
        29: .line 155
      StackMap locals: long
      StackMap stack:
            aload 15 /* range */
            iload 14 /* len */
            iconst_1
            isub
            iload 18 /* i */
            isub
            lload 16 /* next */
            lastore
        30: .line 156
            lload 0 /* mean */
            lload 19 /* delta */
            ladd
            lstore 16 /* next */
        end local 19 // long delta
        31: .line 145
      StackMap locals:
      StackMap stack:
            iinc 18 /* i */ 1
      StackMap locals:
      StackMap stack:
        32: iload 18 /* i */
            aload 15 /* range */
            arraylength
            if_icmplt 24
        end local 18 // int i
        33: .line 159
            aload 15 /* range */
            areturn
        end local 16 // long next
        end local 15 // long[] range
        end local 14 // int len
        end local 12 // double stdevsTo
        end local 10 // long smaller
        end local 8 // long larger
        end local 7 // int maxdevs
        end local 5 // double stdev
        end local 4 // boolean ismin
        end local 2 // long minormax
        end local 0 // long mean
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   34     0      mean  J
            0   34     2  minormax  J
            0   34     4     ismin  Z
            0   34     5     stdev  D
            0   34     7   maxdevs  I
            9   11     8    larger  J
           12   34     8    larger  J
           10   11    10   smaller  J
           13   34    10   smaller  J
           14   34    12  stdevsTo  D
           18   34    14       len  I
           19   34    15     range  [J
           22   34    16      next  J
           23   33    18         i  I
           25   31    19     delta  J
    MethodParameters:
          Name  Flags
      mean      
      minormax  
      ismin     
      stdev     
      maxdevs   
}
SourceFile: "HistogramBuilder.java"