public class com.netflix.hystrix.util.HystrixRollingPercentile
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.netflix.hystrix.util.HystrixRollingPercentile
  super_class: java.lang.Object
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final com.netflix.hystrix.util.HystrixRollingPercentile$Time ACTUAL_TIME;
    descriptor: Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private final com.netflix.hystrix.util.HystrixRollingPercentile$Time time;
    descriptor: Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  final com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray buckets;
    descriptor: Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
    flags: (0x0010) ACC_FINAL

  private final int timeInMilliseconds;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int numberOfBuckets;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int bucketDataLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int bucketSizeInMilliseconds;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Boolean> enabled;
    descriptor: Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;

  volatile com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot currentPercentileSnapshot;
    descriptor: Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
    flags: (0x0040) ACC_VOLATILE

  private java.util.concurrent.locks.ReentrantLock newBucketLock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 47
            ldc Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic com.netflix.hystrix.util.HystrixRollingPercentile.logger:Lorg/slf4j/Logger;
         1: .line 49
            new com.netflix.hystrix.util.HystrixRollingPercentile$ActualTime
            dup
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$ActualTime.<init>:()V
            putstatic com.netflix.hystrix.util.HystrixRollingPercentile.ACTUAL_TIME:Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Integer>, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Integer>, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Integer>, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Boolean>);
    descriptor: (Lcom/netflix/hystrix/strategy/properties/HystrixProperty;Lcom/netflix/hystrix/strategy/properties/HystrixProperty;Lcom/netflix/hystrix/strategy/properties/HystrixProperty;Lcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
        start local 1 // com.netflix.hystrix.strategy.properties.HystrixProperty timeInMilliseconds
        start local 2 // com.netflix.hystrix.strategy.properties.HystrixProperty numberOfBuckets
        start local 3 // com.netflix.hystrix.strategy.properties.HystrixProperty bucketDataLength
        start local 4 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
         0: .line 91
            aload 0 /* this */
            aload 1 /* timeInMilliseconds */
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            aload 2 /* numberOfBuckets */
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            aload 3 /* bucketDataLength */
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            aload 4 /* enabled */
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile.<init>:(IIILcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
         1: .line 92
            return
        end local 4 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
        end local 3 // com.netflix.hystrix.strategy.properties.HystrixProperty bucketDataLength
        end local 2 // com.netflix.hystrix.strategy.properties.HystrixProperty numberOfBuckets
        end local 1 // com.netflix.hystrix.strategy.properties.HystrixProperty timeInMilliseconds
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            0    2     1  timeInMilliseconds  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;
            0    2     2     numberOfBuckets  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;
            0    2     3    bucketDataLength  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;
            0    2     4             enabled  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;
    Signature: (Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Integer;>;Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;)V
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
                    Name  Flags
      timeInMilliseconds  
      numberOfBuckets     
      bucketDataLength    
      enabled             

  public void <init>(int, int, int, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Boolean>);
    descriptor: (IIILcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
        start local 1 // int timeInMilliseconds
        start local 2 // int numberOfBuckets
        start local 3 // int bucketDataLength
        start local 4 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
         0: .line 114
            aload 0 /* this */
            getstatic com.netflix.hystrix.util.HystrixRollingPercentile.ACTUAL_TIME:Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
            iload 1 /* timeInMilliseconds */
            iload 2 /* numberOfBuckets */
            iload 3 /* bucketDataLength */
            aload 4 /* enabled */
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile.<init>:(Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;IIILcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
         1: .line 116
            return
        end local 4 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
        end local 3 // int bucketDataLength
        end local 2 // int numberOfBuckets
        end local 1 // int timeInMilliseconds
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    2     0                this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            0    2     1  timeInMilliseconds  I
            0    2     2     numberOfBuckets  I
            0    2     3    bucketDataLength  I
            0    2     4             enabled  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;
    Signature: (IIILcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;)V
    MethodParameters:
                    Name  Flags
      timeInMilliseconds  
      numberOfBuckets     
      bucketDataLength    
      enabled             

  void <init>(com.netflix.hystrix.util.HystrixRollingPercentile$Time, int, int, int, com.netflix.hystrix.strategy.properties.HystrixProperty<java.lang.Boolean>);
    descriptor: (Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;IIILcom/netflix/hystrix/strategy/properties/HystrixProperty;)V
    flags: (0x0000) 
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
        start local 1 // com.netflix.hystrix.util.HystrixRollingPercentile$Time time
        start local 2 // int timeInMilliseconds
        start local 3 // int numberOfBuckets
        start local 4 // int bucketDataLength
        start local 5 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
         0: .line 118
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 61
            aload 0 /* this */
            new com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot
            dup
            iconst_1
            newarray 10
            dup
            iconst_0
            iconst_0
            iastore
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot.<init>:([I)V
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.currentPercentileSnapshot:Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
         2: .line 202
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 119
            aload 0 /* this */
            aload 1 /* time */
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.time:Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
         4: .line 120
            aload 0 /* this */
            iload 2 /* timeInMilliseconds */
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.timeInMilliseconds:I
         5: .line 121
            aload 0 /* this */
            iload 3 /* numberOfBuckets */
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.numberOfBuckets:I
         6: .line 122
            aload 0 /* this */
            iload 4 /* bucketDataLength */
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketDataLength:I
         7: .line 123
            aload 0 /* this */
            aload 5 /* enabled */
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.enabled:Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
         8: .line 125
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.timeInMilliseconds:I
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.numberOfBuckets:I
            irem
            ifeq 10
         9: .line 126
            new java.lang.IllegalArgumentException
            dup
            ldc "The timeInMilliseconds must divide equally into numberOfBuckets. For example 1000/10 is ok, 1000/11 is not."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 128
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile com.netflix.hystrix.util.HystrixRollingPercentile$Time int int int com.netflix.hystrix.strategy.properties.HystrixProperty
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.timeInMilliseconds:I
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.numberOfBuckets:I
            idiv
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketSizeInMilliseconds:I
        11: .line 130
            aload 0 /* this */
            new com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray
            dup
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.numberOfBuckets:I
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.<init>:(I)V
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
        12: .line 131
            return
        end local 5 // com.netflix.hystrix.strategy.properties.HystrixProperty enabled
        end local 4 // int bucketDataLength
        end local 3 // int numberOfBuckets
        end local 2 // int timeInMilliseconds
        end local 1 // com.netflix.hystrix.util.HystrixRollingPercentile$Time time
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   13     0                this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            0   13     1                time  Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
            0   13     2  timeInMilliseconds  I
            0   13     3     numberOfBuckets  I
            0   13     4    bucketDataLength  I
            0   13     5             enabled  Lcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;
    Signature: (Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;IIILcom/netflix/hystrix/strategy/properties/HystrixProperty<Ljava/lang/Boolean;>;)V
    MethodParameters:
                    Name  Flags
      time                
      timeInMilliseconds  
      numberOfBuckets     
      bucketDataLength    
      enabled             

  public void addValue(int[]);
    descriptor: ([I)V
    flags: (0x0081) ACC_PUBLIC, ACC_VARARGS
    Code:
      stack=5, locals=7, args_size=2
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
        start local 1 // int[] value
         0: .line 141
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.enabled:Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 2
         1: .line 142
            return
         2: .line 144
      StackMap locals:
      StackMap stack:
            aload 1 /* value */
            dup
            astore 5
            arraylength
            istore 4
            iconst_0
            istore 3
            goto 9
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile int[] top int int int[]
      StackMap stack:
         3: aload 5
            iload 3
            iaload
            istore 2 /* v */
        start local 2 // int v
         4: .line 146
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            getfield com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.data:Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileBucketData;
            iconst_1
            newarray 10
            dup
            iconst_0
            iload 2 /* v */
            iastore
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$PercentileBucketData.addValue:([I)V
         5: .line 147
            goto 8
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile int[] int int int int[]
      StackMap stack: java.lang.Exception
         6: astore 6 /* e */
        start local 6 // java.lang.Exception e
         7: .line 148
            getstatic com.netflix.hystrix.util.HystrixRollingPercentile.logger:Lorg/slf4j/Logger;
            new java.lang.StringBuilder
            dup
            ldc "Failed to add value: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* v */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 6 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 6 // java.lang.Exception e
        end local 2 // int v
         8: .line 144
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile int[] top int int int[]
      StackMap stack:
            iinc 3 1
      StackMap locals:
      StackMap stack:
         9: iload 3
            iload 4
            if_icmplt 3
        10: .line 151
            return
        end local 1 // int[] value
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   11     0   this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            0   11     1  value  [I
            4    8     2      v  I
            7    8     6      e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           4     5       6  Class java.lang.Exception
    MethodParameters:
       Name  Flags
      value  

  public int getPercentile(double);
    descriptor: (D)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
        start local 1 // double percentile
         0: .line 166
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.enabled:Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 2
         1: .line 167
            iconst_m1
            ireturn
         2: .line 170
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            pop
         3: .line 172
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentPercentileSnapshot:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
            dload 1 /* percentile */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot.getPercentile:(D)I
            ireturn
        end local 1 // double percentile
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            0    4     1  percentile  D
    MethodParameters:
            Name  Flags
      percentile  

  public int getMean();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
         0: .line 182
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.enabled:Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 2
         1: .line 183
            iconst_m1
            ireturn
         2: .line 186
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            pop
         3: .line 188
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentPercentileSnapshot:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot.getMean:()I
            ireturn
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;

  private com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot getCurrentPercentileSnapshot();
    descriptor: ()Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
         0: .line 199
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.currentPercentileSnapshot:Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
            areturn
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;

  private com.netflix.hystrix.util.HystrixRollingPercentile$Bucket getCurrentBucket();
    descriptor: ()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=9, args_size=1
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
         0: .line 205
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.time:Lcom/netflix/hystrix/util/HystrixRollingPercentile$Time;
            invokeinterface com.netflix.hystrix.util.HystrixRollingPercentile$Time.getCurrentTimeInMillis:()J
            lstore 1 /* currentTime */
        start local 1 // long currentTime
         1: .line 214
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 3 /* currentBucket */
        start local 3 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket currentBucket
         2: .line 215
            aload 3 /* currentBucket */
            ifnull 4
            lload 1 /* currentTime */
            aload 3 /* currentBucket */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.windowStart:J
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketSizeInMilliseconds:I
            i2l
            ladd
            lcmp
            ifge 4
         3: .line 219
            aload 3 /* currentBucket */
            areturn
         4: .line 246
      StackMap locals: long com.netflix.hystrix.util.HystrixRollingPercentile$Bucket
      StackMap stack:
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.tryLock:()Z
            ifeq 34
         5: .line 248
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            ifnonnull 11
         6: .line 250
            new com.netflix.hystrix.util.HystrixRollingPercentile$Bucket
            dup
            lload 1 /* currentTime */
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketDataLength:I
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.<init>:(JI)V
            astore 4 /* newBucket */
        start local 4 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket newBucket
         7: .line 251
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            aload 4 /* newBucket */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.addLast:(Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;)V
         8: .line 252
            aload 4 /* newBucket */
            astore 8
         9: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        10: .line 252
            aload 8
            areturn
        end local 4 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket newBucket
        11: .line 256
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        12: goto 27
        13: .line 258
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 5 /* lastBucket */
        start local 5 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket lastBucket
        14: .line 259
            lload 1 /* currentTime */
            aload 5 /* lastBucket */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.windowStart:J
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketSizeInMilliseconds:I
            i2l
            ladd
            lcmp
            ifge 18
        15: .line 263
            aload 5 /* lastBucket */
            astore 8
        16: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        17: .line 263
            aload 8
            areturn
        18: .line 264
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile$Bucket
      StackMap stack:
            lload 1 /* currentTime */
            aload 5 /* lastBucket */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.windowStart:J
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketSizeInMilliseconds:I
            i2l
            ladd
            lsub
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.timeInMilliseconds:I
            i2l
            lcmp
            ifle 23
        19: .line 266
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.reset:()V
        20: .line 268
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 8
        21: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        22: .line 268
            aload 8
            areturn
        23: .line 270
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.getArray:()[Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 6 /* allBuckets */
        start local 6 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket[] allBuckets
        24: .line 272
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            new com.netflix.hystrix.util.HystrixRollingPercentile$Bucket
            dup
            aload 5 /* lastBucket */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.windowStart:J
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketSizeInMilliseconds:I
            i2l
            ladd
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.bucketDataLength:I
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$Bucket.<init>:(JI)V
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.addLast:(Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;)V
        25: .line 274
            aload 0 /* this */
            new com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot
            dup
            aload 6 /* allBuckets */
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot.<init>:([Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;)V
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.currentPercentileSnapshot:Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
        end local 6 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket[] allBuckets
        end local 5 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket lastBucket
        26: .line 256
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        27: iload 4 /* i */
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.numberOfBuckets:I
            if_icmplt 13
        end local 4 // int i
        28: .line 278
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 8
        29: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        30: .line 278
            aload 8
            areturn
        31: .line 280
      StackMap locals: com.netflix.hystrix.util.HystrixRollingPercentile long com.netflix.hystrix.util.HystrixRollingPercentile$Bucket
      StackMap stack: java.lang.Throwable
            astore 7
        32: .line 281
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.newBucketLock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        33: .line 282
            aload 7
            athrow
        34: .line 284
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.peekLast:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            astore 3 /* currentBucket */
        35: .line 285
            aload 3 /* currentBucket */
            ifnull 37
        36: .line 287
            aload 3 /* currentBucket */
            areturn
        37: .line 292
      StackMap locals:
      StackMap stack:
            ldc 5
            invokestatic java.lang.Thread.sleep:(J)V
        38: .line 293
            goto 40
      StackMap locals:
      StackMap stack: java.lang.Exception
        39: pop
        40: .line 296
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile.getCurrentBucket:()Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            areturn
        end local 3 // com.netflix.hystrix.util.HystrixRollingPercentile$Bucket currentBucket
        end local 1 // long currentTime
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   41     0           this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
            1   41     1    currentTime  J
            2   41     3  currentBucket  Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            7   11     4      newBucket  Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
           12   28     4              i  I
           14   26     5     lastBucket  Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
           24   26     6     allBuckets  [Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
      Exception table:
        from    to  target  type
           5     9      31  any
          11    16      31  any
          18    21      31  any
          23    29      31  any
          37    38      39  Class java.lang.Exception

  public void reset();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
         0: .line 306
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.enabled:Lcom/netflix/hystrix/strategy/properties/HystrixProperty;
            invokeinterface com.netflix.hystrix.strategy.properties.HystrixProperty.get:()Ljava/lang/Object;
            checkcast java.lang.Boolean
            invokevirtual java.lang.Boolean.booleanValue:()Z
            ifne 2
         1: .line 307
            return
         2: .line 310
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.clear:()V
         3: .line 313
            aload 0 /* this */
            new com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot
            dup
            aload 0 /* this */
            getfield com.netflix.hystrix.util.HystrixRollingPercentile.buckets:Lcom/netflix/hystrix/util/HystrixRollingPercentile$BucketCircularArray;
            invokevirtual com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray.getArray:()[Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;
            invokespecial com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot.<init>:([Lcom/netflix/hystrix/util/HystrixRollingPercentile$Bucket;)V
            putfield com.netflix.hystrix.util.HystrixRollingPercentile.currentPercentileSnapshot:Lcom/netflix/hystrix/util/HystrixRollingPercentile$PercentileSnapshot;
         4: .line 314
            return
        end local 0 // com.netflix.hystrix.util.HystrixRollingPercentile this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lcom/netflix/hystrix/util/HystrixRollingPercentile;
}
SourceFile: "HystrixRollingPercentile.java"
NestMembers:
  com.netflix.hystrix.util.HystrixRollingPercentile$ActualTime  com.netflix.hystrix.util.HystrixRollingPercentile$Bucket  com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray  com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray$ListState  com.netflix.hystrix.util.HystrixRollingPercentile$PercentileBucketData  com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot  com.netflix.hystrix.util.HystrixRollingPercentile$Time
InnerClasses:
  private ActualTime = com.netflix.hystrix.util.HystrixRollingPercentile$ActualTime of com.netflix.hystrix.util.HystrixRollingPercentile
  Bucket = com.netflix.hystrix.util.HystrixRollingPercentile$Bucket of com.netflix.hystrix.util.HystrixRollingPercentile
  BucketCircularArray = com.netflix.hystrix.util.HystrixRollingPercentile$BucketCircularArray of com.netflix.hystrix.util.HystrixRollingPercentile
  PercentileBucketData = com.netflix.hystrix.util.HystrixRollingPercentile$PercentileBucketData of com.netflix.hystrix.util.HystrixRollingPercentile
  PercentileSnapshot = com.netflix.hystrix.util.HystrixRollingPercentile$PercentileSnapshot of com.netflix.hystrix.util.HystrixRollingPercentile
  abstract Time = com.netflix.hystrix.util.HystrixRollingPercentile$Time of com.netflix.hystrix.util.HystrixRollingPercentile