public class org.apache.lucene.store.RateLimiter$SimpleRateLimiter extends org.apache.lucene.store.RateLimiter
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.lucene.store.RateLimiter$SimpleRateLimiter
  super_class: org.apache.lucene.store.RateLimiter
{
  private static final int MIN_PAUSE_CHECK_MSEC;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  private volatile double mbPerSec;
    descriptor: D
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private volatile long minPauseCheckBytes;
    descriptor: J
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  private long lastNS;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  public void <init>(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
        start local 1 // double mbPerSec
         0: .line 71
            aload 0 /* this */
            invokespecial org.apache.lucene.store.RateLimiter.<init>:()V
         1: .line 72
            aload 0 /* this */
            dload 1 /* mbPerSec */
            invokevirtual org.apache.lucene.store.RateLimiter$SimpleRateLimiter.setMBPerSec:(D)V
         2: .line 73
            aload 0 /* this */
            invokestatic java.lang.System.nanoTime:()J
            putfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.lastNS:J
         3: .line 74
            return
        end local 1 // double mbPerSec
        end local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Lorg/apache/lucene/store/RateLimiter$SimpleRateLimiter;
            0    4     1  mbPerSec  D
    MethodParameters:
          Name  Flags
      mbPerSec  

  public void setMBPerSec(double);
    descriptor: (D)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
        start local 1 // double mbPerSec
         0: .line 81
            aload 0 /* this */
            dload 1 /* mbPerSec */
            putfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.mbPerSec:D
         1: .line 82
            aload 0 /* this */
            ldc 0.005
            dload 1 /* mbPerSec */
            dmul
            ldc 1024.0
            dmul
            ldc 1024.0
            dmul
            d2l
            putfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.minPauseCheckBytes:J
         2: .line 83
            return
        end local 1 // double mbPerSec
        end local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/lucene/store/RateLimiter$SimpleRateLimiter;
            0    3     1  mbPerSec  D
    MethodParameters:
          Name  Flags
      mbPerSec  

  public long getMinPauseCheckBytes();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
         0: .line 87
            aload 0 /* this */
            getfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.minPauseCheckBytes:J
            lreturn
        end local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/store/RateLimiter$SimpleRateLimiter;

  public double getMBPerSec();
    descriptor: ()D
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
         0: .line 95
            aload 0 /* this */
            getfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.mbPerSec:D
            dreturn
        end local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/lucene/store/RateLimiter$SimpleRateLimiter;

  public long pause(long);
    descriptor: (J)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=15, args_size=2
        start local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
        start local 1 // long bytes
         0: .line 107
            invokestatic java.lang.System.nanoTime:()J
            lstore 3 /* startNS */
        start local 3 // long startNS
         1: .line 109
            lload 1 /* bytes */
            l2d
            ldc 1024.0
            ddiv
            ldc 1024.0
            ddiv
            aload 0 /* this */
            getfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.mbPerSec:D
            ddiv
            dstore 5 /* secondsToPause */
        start local 5 // double secondsToPause
         2: .line 114
            aload 0 /* this */
            dup
            astore 9
            monitorenter
         3: .line 119
            aload 0 /* this */
            getfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.lastNS:J
            ldc 1.0E9
            dload 5 /* secondsToPause */
            dmul
            d2l
            ladd
            lstore 7 /* targetNS */
        start local 7 // long targetNS
         4: .line 121
            lload 3 /* startNS */
            lload 7 /* targetNS */
            lcmp
            iflt 8
         5: .line 127
            aload 0 /* this */
            lload 3 /* startNS */
            putfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.lastNS:J
         6: .line 128
            aload 9
            monitorexit
         7: lconst_0
            lreturn
         8: .line 131
      StackMap locals: org.apache.lucene.store.RateLimiter$SimpleRateLimiter long long double long org.apache.lucene.store.RateLimiter$SimpleRateLimiter
      StackMap stack:
            aload 0 /* this */
            lload 7 /* targetNS */
            putfield org.apache.lucene.store.RateLimiter$SimpleRateLimiter.lastNS:J
         9: .line 114
            aload 9
            monitorexit
        10: goto 13
        end local 7 // long targetNS
      StackMap locals: org.apache.lucene.store.RateLimiter$SimpleRateLimiter long long double top top org.apache.lucene.store.RateLimiter$SimpleRateLimiter
      StackMap stack: java.lang.Throwable
        11: aload 9
            monitorexit
        12: athrow
        start local 7 // long targetNS
        13: .line 134
      StackMap locals: org.apache.lucene.store.RateLimiter$SimpleRateLimiter long long double long
      StackMap stack:
            lload 3 /* startNS */
            lstore 9 /* curNS */
        start local 9 // long curNS
        14: .line 139
      StackMap locals: long
      StackMap stack:
            lload 7 /* targetNS */
            lload 9 /* curNS */
            lsub
            lstore 11 /* pauseNS */
        start local 11 // long pauseNS
        15: .line 140
            lload 11 /* pauseNS */
            lconst_0
            lcmp
            ifle 28
        16: .line 147
            lload 11 /* pauseNS */
            ldc 214748364700000
            lcmp
            ifle 20
        17: .line 149
            ldc 2147483647
            istore 14 /* sleepMS */
        start local 14 // int sleepMS
        18: .line 150
            iconst_0
            istore 13 /* sleepNS */
        start local 13 // int sleepNS
        19: .line 151
            goto 22
        end local 14 // int sleepMS
        end local 13 // int sleepNS
        20: .line 152
      StackMap locals: long
      StackMap stack:
            lload 11 /* pauseNS */
            ldc 1000000
            ldiv
            l2i
            istore 14 /* sleepMS */
        start local 14 // int sleepMS
        21: .line 153
            lload 11 /* pauseNS */
            ldc 1000000
            lrem
            l2i
            istore 13 /* sleepNS */
        start local 13 // int sleepNS
        22: .line 155
      StackMap locals: int int
      StackMap stack:
            iload 14 /* sleepMS */
            i2l
            iload 13 /* sleepNS */
            invokestatic java.lang.Thread.sleep:(JI)V
        end local 14 // int sleepMS
        end local 13 // int sleepNS
        23: .line 156
            goto 26
      StackMap locals: org.apache.lucene.store.RateLimiter$SimpleRateLimiter long long double long long long
      StackMap stack: java.lang.InterruptedException
        24: astore 13 /* ie */
        start local 13 // java.lang.InterruptedException ie
        25: .line 157
            new org.apache.lucene.util.ThreadInterruptedException
            dup
            aload 13 /* ie */
            invokespecial org.apache.lucene.util.ThreadInterruptedException.<init>:(Ljava/lang/InterruptedException;)V
            athrow
        end local 13 // java.lang.InterruptedException ie
        26: .line 159
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            lstore 9 /* curNS */
        end local 11 // long pauseNS
        27: .line 138
            goto 14
        28: .line 165
      StackMap locals:
      StackMap stack:
            lload 9 /* curNS */
            lload 3 /* startNS */
            lsub
            lreturn
        end local 9 // long curNS
        end local 7 // long targetNS
        end local 5 // double secondsToPause
        end local 3 // long startNS
        end local 1 // long bytes
        end local 0 // org.apache.lucene.store.RateLimiter$SimpleRateLimiter this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   29     0            this  Lorg/apache/lucene/store/RateLimiter$SimpleRateLimiter;
            0   29     1           bytes  J
            1   29     3         startNS  J
            2   29     5  secondsToPause  D
            4   11     7        targetNS  J
           13   29     7        targetNS  J
           14   29     9           curNS  J
           15   27    11         pauseNS  J
           19   20    13         sleepNS  I
           22   23    13         sleepNS  I
           18   20    14         sleepMS  I
           21   23    14         sleepMS  I
           25   26    13              ie  Ljava/lang/InterruptedException;
      Exception table:
        from    to  target  type
           3     7      11  any
           8    10      11  any
          11    12      11  any
          16    23      24  Class java.lang.InterruptedException
    MethodParameters:
       Name  Flags
      bytes  
}
SourceFile: "RateLimiter.java"
NestHost: org.apache.lucene.store.RateLimiter
InnerClasses:
  public SimpleRateLimiter = org.apache.lucene.store.RateLimiter$SimpleRateLimiter of org.apache.lucene.store.RateLimiter