public abstract class org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir<V> implements org.glassfish.jersey.server.internal.monitoring.core.TimeReservoir<V>
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir
  super_class: java.lang.Object
{
  private final java.util.concurrent.ConcurrentNavigableMap<java.lang.Long, V> measurements;
    descriptor: Ljava/util/concurrent/ConcurrentNavigableMap;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/concurrent/ConcurrentNavigableMap<Ljava/lang/Long;TV;>;

  private final long window;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicLong greatestTick;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicLong updateCount;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicLong startTick;
    descriptor: Ljava/util/concurrent/atomic/AtomicLong;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.atomic.AtomicInteger trimOff;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer<V> trimmer;
    descriptor: Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer<TV;>;

  private final long interval;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.TimeUnit intervalUnit;
    descriptor: Ljava/util/concurrent/TimeUnit;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public void <init>(long, java.util.concurrent.TimeUnit, long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=5
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long window
        start local 3 // java.util.concurrent.TimeUnit windowUnit
        start local 4 // long startTime
        start local 6 // java.util.concurrent.TimeUnit startTimeUnit
         0: .line 71
            aload 0 /* this */
            lload 1 /* window */
            aload 3 /* windowUnit */
            lload 4 /* startTime */
            aload 6 /* startTimeUnit */
            aconst_null
            invokespecial org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.<init>:(JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;)V
         1: .line 72
            return
        end local 6 // java.util.concurrent.TimeUnit startTimeUnit
        end local 4 // long startTime
        end local 3 // java.util.concurrent.TimeUnit windowUnit
        end local 1 // long window
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    2     1         window  J
            0    2     3     windowUnit  Ljava/util/concurrent/TimeUnit;
            0    2     4      startTime  J
            0    2     6  startTimeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
               Name  Flags
      window         final
      windowUnit     final
      startTime      final
      startTimeUnit  final

  public void <init>(long, java.util.concurrent.TimeUnit, long, java.util.concurrent.TimeUnit, org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer<V>);
    descriptor: (JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=8, args_size=6
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long window
        start local 3 // java.util.concurrent.TimeUnit windowUnit
        start local 4 // long startTime
        start local 6 // java.util.concurrent.TimeUnit startTimeUnit
        start local 7 // org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer trimmer
         0: .line 84
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 89
            aload 0 /* this */
            aload 7 /* trimmer */
            ifnull 2
            aload 7 /* trimmer */
            goto 3
      StackMap locals: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir long java.util.concurrent.TimeUnit long java.util.concurrent.TimeUnit org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer
      StackMap stack: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir
         2: getstatic org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir$DefaultSlidingWindowTrimmerHolder.INSTANCE:Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;
      StackMap locals: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir long java.util.concurrent.TimeUnit long java.util.concurrent.TimeUnit org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer
      StackMap stack: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer
         3: putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimmer:Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;
         4: .line 90
            aload 0 /* this */
            new java.util.concurrent.ConcurrentSkipListMap
            dup
            invokespecial java.util.concurrent.ConcurrentSkipListMap.<init>:()V
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.measurements:Ljava/util/concurrent/ConcurrentNavigableMap;
         5: .line 91
            aload 0 /* this */
            lload 1 /* window */
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.interval:J
         6: .line 92
            aload 0 /* this */
            aload 3 /* windowUnit */
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.intervalUnit:Ljava/util/concurrent/TimeUnit;
         7: .line 93
            aload 0 /* this */
            aload 3 /* windowUnit */
            lload 1 /* window */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            bipush 8
            lshl
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.window:J
         8: .line 94
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            aload 0 /* this */
            lload 4 /* startTime */
            aload 6 /* startTimeUnit */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.tick:(JLjava/util/concurrent/TimeUnit;)J
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
         9: .line 95
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.greatestTick:Ljava/util/concurrent/atomic/AtomicLong;
        10: .line 96
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicLong
            dup
            lconst_0
            invokespecial java.util.concurrent.atomic.AtomicLong.<init>:(J)V
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.updateCount:Ljava/util/concurrent/atomic/AtomicLong;
        11: .line 97
            aload 0 /* this */
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_0
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimOff:Ljava/util/concurrent/atomic/AtomicInteger;
        12: .line 99
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimmer:Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;
            aload 0 /* this */
            invokeinterface org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer.setTimeReservoir:(Lorg/glassfish/jersey/server/internal/monitoring/core/TimeReservoir;)V
        13: .line 100
            return
        end local 7 // org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer trimmer
        end local 6 // java.util.concurrent.TimeUnit startTimeUnit
        end local 4 // long startTime
        end local 3 // java.util.concurrent.TimeUnit windowUnit
        end local 1 // long window
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0   14     1         window  J
            0   14     3     windowUnit  Ljava/util/concurrent/TimeUnit;
            0   14     4      startTime  J
            0   14     6  startTimeUnit  Ljava/util/concurrent/TimeUnit;
            0   14     7        trimmer  Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer<TV;>;
    Signature: (JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer<TV;>;)V
    MethodParameters:
               Name  Flags
      window         final
      windowUnit     final
      startTime      final
      startTimeUnit  final
      trimmer        final

  public int size(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 104
            aload 0 /* this */
            aload 0 /* this */
            lload 1 /* time */
            aload 3 /* timeUnit */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.tick:(JLjava/util/concurrent/TimeUnit;)J
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.conditionallyUpdateGreatestTick:(J)J
            pop2
         1: .line 105
            aload 0 /* this */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trim:()V
         2: .line 106
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.measurements:Ljava/util/concurrent/ConcurrentNavigableMap;
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.size:()I
            ireturn
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    3     1      time  J
            0    3     3  timeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
          Name  Flags
      time      
      timeUnit  

  public void update(V, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // java.lang.Object value
        start local 2 // long time
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 111
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.updateCount:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.incrementAndGet:()J
            ldc 256
            lrem
            lconst_0
            lcmp
            ifne 2
         1: .line 112
            aload 0 /* this */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trim:()V
         2: .line 115
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            lload 2 /* time */
            aload 4 /* timeUnit */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.tick:(JLjava/util/concurrent/TimeUnit;)J
            lstore 5 /* tick */
        start local 5 // long tick
         3: .line 116
            iconst_0
            istore 7 /* i */
        start local 7 // int i
         4: goto 10
         5: .line 117
      StackMap locals: long int
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.measurements:Ljava/util/concurrent/ConcurrentNavigableMap;
            lload 5 /* tick */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 1 /* value */
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            ifnonnull 8
         6: .line 118
            aload 0 /* this */
            lload 5 /* tick */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.conditionallyUpdateGreatestTick:(J)J
            pop2
         7: .line 119
            return
         8: .line 124
      StackMap locals:
      StackMap stack:
            lload 5 /* tick */
            lconst_1
            ladd
            lstore 5 /* tick */
         9: .line 116
            iinc 7 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 7 /* i */
            sipush 256
            if_icmplt 5
        end local 7 // int i
        11: .line 126
            return
        end local 5 // long tick
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long time
        end local 1 // java.lang.Object value
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0   12     1     value  TV;
            0   12     2      time  J
            0   12     4  timeUnit  Ljava/util/concurrent/TimeUnit;
            3   12     5      tick  J
            4   11     7         i  I
    Signature: (TV;JLjava/util/concurrent/TimeUnit;)V
    MethodParameters:
          Name  Flags
      value     
      time      
      timeUnit  

  public long interval(java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/TimeUnit;)J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // java.util.concurrent.TimeUnit timeUnit
         0: .line 130
            aload 1 /* timeUnit */
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.interval:J
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.intervalUnit:Ljava/util/concurrent/TimeUnit;
            invokevirtual java.util.concurrent.TimeUnit.convert:(JLjava/util/concurrent/TimeUnit;)J
            lreturn
        end local 1 // java.util.concurrent.TimeUnit timeUnit
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    1     1  timeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
          Name  Flags
      timeUnit  final

  private long conditionallyUpdateGreatestTick(long);
    descriptor: (J)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long tick
         0: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.greatestTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 3 /* currentGreatestTick */
        start local 3 // long currentGreatestTick
         1: .line 136
            lload 1 /* tick */
            lload 3 /* currentGreatestTick */
            lcmp
            ifgt 3
         2: .line 138
            lload 3 /* currentGreatestTick */
            lreturn
         3: .line 140
      StackMap locals: long
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.greatestTick:Ljava/util/concurrent/atomic/AtomicLong;
            lload 3 /* currentGreatestTick */
            lload 1 /* tick */
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 0
         4: .line 142
            lload 1 /* tick */
            lreturn
        end local 3 // long currentGreatestTick
        end local 1 // long tick
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0    5     0                 this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    5     1                 tick  J
            1    5     3  currentGreatestTick  J
    MethodParameters:
      Name  Flags
      tick  final

  private void conditionallyUpdateStartTick(java.util.Map$Entry<java.lang.Long, V>);
    descriptor: (Ljava/util/Map$Entry;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // java.util.Map$Entry firstEntry
         0: .line 153
            aload 1 /* firstEntry */
            ifnull 1
            aload 1 /* firstEntry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.Long
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: java.lang.Long
         2: astore 2 /* firstEntryKey */
        start local 2 // java.lang.Long firstEntryKey
         3: .line 154
            aload 2 /* firstEntryKey */
            ifnull 7
            aload 2 /* firstEntryKey */
            invokevirtual java.lang.Long.longValue:()J
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lcmp
            ifge 7
         4: .line 156
      StackMap locals: java.lang.Long
      StackMap stack:
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lstore 3 /* expectedStartTick */
        start local 3 // long expectedStartTick
         5: .line 158
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
            lload 3 /* expectedStartTick */
            aload 2 /* firstEntryKey */
            invokevirtual java.lang.Long.longValue:()J
            invokevirtual java.util.concurrent.atomic.AtomicLong.compareAndSet:(JJ)Z
            ifeq 4
         6: .line 159
            return
        end local 3 // long expectedStartTick
         7: .line 163
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Long firstEntryKey
        end local 1 // java.util.Map$Entry firstEntry
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    8     0               this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    8     1         firstEntry  Ljava/util/Map$Entry<Ljava/lang/Long;TV;>;
            3    8     2      firstEntryKey  Ljava/lang/Long;
            5    7     3  expectedStartTick  J
    Signature: (Ljava/util/Map$Entry<Ljava/lang/Long;TV;>;)V
    MethodParameters:
            Name  Flags
      firstEntry  final

  protected abstract org.glassfish.jersey.server.internal.monitoring.core.UniformTimeSnapshot snapshot(java.util.Collection<V>, long, java.util.concurrent.TimeUnit, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)Lorg/glassfish/jersey/server/internal/monitoring/core/UniformTimeSnapshot;
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Signature: (Ljava/util/Collection<TV;>;JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)Lorg/glassfish/jersey/server/internal/monitoring/core/UniformTimeSnapshot;
    MethodParameters:
                  Name  Flags
      values            final
      timeInterval      final
      timeIntervalUnit  final
      time              final
      timeUnit          final

  public org.glassfish.jersey.server.internal.monitoring.core.UniformTimeSnapshot getSnapshot(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)Lorg/glassfish/jersey/server/internal/monitoring/core/UniformTimeSnapshot;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=11, args_size=3
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 183
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimOff:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
         1: .line 184
            aload 0 /* this */
            aload 0 /* this */
            lload 1 /* time */
            aload 3 /* timeUnit */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.tick:(JLjava/util/concurrent/TimeUnit;)J
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.conditionallyUpdateGreatestTick:(J)J
            lstore 4 /* baselineTick */
        start local 4 // long baselineTick
         2: .line 188
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.measurements:Ljava/util/concurrent/ConcurrentNavigableMap;
         3: .line 189
            aload 0 /* this */
            lload 4 /* baselineTick */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.roundTick:(J)J
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.window:J
            lsub
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            iconst_1
            lload 4 /* baselineTick */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            iconst_1
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.subMap:(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentNavigableMap;
         4: .line 188
            astore 6 /* windowMap */
        start local 6 // java.util.concurrent.ConcurrentNavigableMap windowMap
         5: .line 193
            aload 0 /* this */
            aload 6 /* windowMap */
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.firstEntry:()Ljava/util/Map$Entry;
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.conditionallyUpdateStartTick:(Ljava/util/Map$Entry;)V
         6: .line 196
            lload 4 /* baselineTick */
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.startTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            lsub
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.window:J
            invokestatic java.lang.Math.min:(JJ)J
            lstore 7 /* measuredTickInterval */
        start local 7 // long measuredTickInterval
         7: .line 198
            aload 0 /* this */
            aload 6 /* windowMap */
            invokeinterface java.util.concurrent.ConcurrentNavigableMap.values:()Ljava/util/Collection;
            lload 7 /* measuredTickInterval */
            bipush 8
            lshr
         8: .line 199
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 1 /* time */
            aload 3 /* timeUnit */
         9: .line 198
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.snapshot:(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;JLjava/util/concurrent/TimeUnit;)Lorg/glassfish/jersey/server/internal/monitoring/core/UniformTimeSnapshot;
            astore 10
        10: .line 201
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimOff:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
            pop
        11: .line 202
            aload 0 /* this */
            lload 4 /* baselineTick */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trim:(J)V
        12: .line 198
            aload 10
            areturn
        end local 7 // long measuredTickInterval
        end local 6 // java.util.concurrent.ConcurrentNavigableMap windowMap
        13: .line 200
      StackMap locals: org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir long java.util.concurrent.TimeUnit long
      StackMap stack: java.lang.Throwable
            astore 9
        14: .line 201
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimOff:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.decrementAndGet:()I
            pop
        15: .line 202
            aload 0 /* this */
            lload 4 /* baselineTick */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trim:(J)V
        16: .line 203
            aload 9
            athrow
        end local 4 // long baselineTick
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   17     0                  this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0   17     1                  time  J
            0   17     3              timeUnit  Ljava/util/concurrent/TimeUnit;
            2   17     4          baselineTick  J
            5   13     6             windowMap  Ljava/util/concurrent/ConcurrentNavigableMap<Ljava/lang/Long;TV;>;
            7   13     7  measuredTickInterval  J
      Exception table:
        from    to  target  type
           2    10      13  any
    MethodParameters:
          Name  Flags
      time      
      timeUnit  

  private long tick(long, java.util.concurrent.TimeUnit);
    descriptor: (JLjava/util/concurrent/TimeUnit;)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long time
        start local 3 // java.util.concurrent.TimeUnit timeUnit
         0: .line 207
            aload 3 /* timeUnit */
            lload 1 /* time */
            invokevirtual java.util.concurrent.TimeUnit.toNanos:(J)J
            bipush 8
            lshl
            lreturn
        end local 3 // java.util.concurrent.TimeUnit timeUnit
        end local 1 // long time
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    1     1      time  J
            0    1     3  timeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
          Name  Flags
      time      
      timeUnit  

  private void trim();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
         0: .line 211
            aload 0 /* this */
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.greatestTick:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.get:()J
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trim:(J)V
         1: .line 212
            return
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;

  private void trim(long);
    descriptor: (J)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long baselineTick
         0: .line 215
            aload 0 /* this */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimEnabled:()Z
            ifeq 3
         1: .line 216
            aload 0 /* this */
            lload 1 /* baselineTick */
            invokevirtual org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.roundTick:(J)J
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.window:J
            lsub
            lstore 3 /* key */
        start local 3 // long key
         2: .line 217
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimmer:Lorg/glassfish/jersey/server/internal/monitoring/core/SlidingWindowTrimmer;
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.measurements:Ljava/util/concurrent/ConcurrentNavigableMap;
            lload 3 /* key */
            invokeinterface org.glassfish.jersey.server.internal.monitoring.core.SlidingWindowTrimmer.trim:(Ljava/util/concurrent/ConcurrentNavigableMap;J)V
        end local 3 // long key
         3: .line 219
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long baselineTick
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0          this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    4     1  baselineTick  J
            2    3     3           key  J
    MethodParameters:
              Name  Flags
      baselineTick  final

  private boolean trimEnabled();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
         0: .line 222
            aload 0 /* this */
            getfield org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir.trimOff:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;

  private long roundTick(long);
    descriptor: (J)J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
        start local 1 // long tick
         0: .line 234
            lload 1 /* tick */
            bipush 8
            lshr
            bipush 8
            lshl
            lreturn
        end local 1 // long tick
        end local 0 // org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/glassfish/jersey/server/internal/monitoring/core/AbstractSlidingWindowTimeReservoir<TV;>;
            0    1     1  tick  J
    MethodParameters:
      Name  Flags
      tick  final
}
Signature: <V:Ljava/lang/Object;>Ljava/lang/Object;Lorg/glassfish/jersey/server/internal/monitoring/core/TimeReservoir<TV;>;
SourceFile: "AbstractSlidingWindowTimeReservoir.java"
NestMembers:
  org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir$DefaultSlidingWindowTrimmerHolder  org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir$DefaultSlidingWindowTrimmerHolder$1
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  private final DefaultSlidingWindowTrimmerHolder = org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir$DefaultSlidingWindowTrimmerHolder of org.glassfish.jersey.server.internal.monitoring.core.AbstractSlidingWindowTimeReservoir