final class io.netty.util.HashedWheelTimer$Worker implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.netty.util.HashedWheelTimer$Worker
  super_class: java.lang.Object
{
  private final java.util.Set<io.netty.util.Timeout> unprocessedTimeouts;
    descriptor: Ljava/util/Set;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/Set<Lio/netty/util/Timeout;>;

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

  final io.netty.util.HashedWheelTimer this$0;
    descriptor: Lio/netty/util/HashedWheelTimer;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  private void <init>(io.netty.util.HashedWheelTimer);
    descriptor: (Lio/netty/util/HashedWheelTimer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 446
            aload 0 /* this */
            aload 1
            putfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 447
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
         2: .line 446
            return
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lio/netty/util/HashedWheelTimer$Worker;
    MethodParameters:
        Name  Flags
      this$0  final

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 454
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            invokestatic java.lang.System.nanoTime:()J
            putfield io.netty.util.HashedWheelTimer.startTime:J
         1: .line 455
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.startTime:J
            lconst_0
            lcmp
            ifne 3
         2: .line 457
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            lconst_1
            putfield io.netty.util.HashedWheelTimer.startTime:J
         3: .line 461
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.startTimeInitialized:Ljava/util/concurrent/CountDownLatch;
            invokevirtual java.util.concurrent.CountDownLatch.countDown:()V
         4: .line 464
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$Worker.waitForNextTick:()J
            lstore 1 /* deadline */
        start local 1 // long deadline
         5: .line 465
            lload 1 /* deadline */
            lconst_0
            lcmp
            ifle 13
         6: .line 466
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.tick:J
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.mask:I
            i2l
            land
            l2i
            istore 3 /* idx */
        start local 3 // int idx
         7: .line 467
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$Worker.processCancelledTasks:()V
         8: .line 469
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
            iload 3 /* idx */
            aaload
         9: .line 468
            astore 4 /* bucket */
        start local 4 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        10: .line 470
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$Worker.transferTimeoutsToBuckets:()V
        11: .line 471
            aload 4 /* bucket */
            lload 1 /* deadline */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts:(J)V
        12: .line 472
            aload 0 /* this */
            dup
            getfield io.netty.util.HashedWheelTimer$Worker.tick:J
            lconst_1
            ladd
            putfield io.netty.util.HashedWheelTimer$Worker.tick:J
        end local 4 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        end local 3 // int idx
        end local 1 // long deadline
        13: .line 474
      StackMap locals:
      StackMap stack:
            getstatic io.netty.util.HashedWheelTimer.WORKER_STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
            iconst_1
            if_icmpeq 4
        14: .line 477
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
            dup
            astore 4
            arraylength
            istore 3
            iconst_0
            istore 2
            goto 18
      StackMap locals: io.netty.util.HashedWheelTimer$Worker top int int io.netty.util.HashedWheelTimer$HashedWheelBucket[]
      StackMap stack:
        15: aload 4
            iload 2
            aaload
            astore 1 /* bucket */
        start local 1 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        16: .line 478
            aload 1 /* bucket */
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.clearTimeouts:(Ljava/util/Set;)V
        end local 1 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        17: .line 477
            iinc 2 1
      StackMap locals:
      StackMap stack:
        18: iload 2
            iload 3
            if_icmplt 15
        19: .line 481
      StackMap locals: io.netty.util.HashedWheelTimer$Worker
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.timeouts:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
            astore 1 /* timeout */
        start local 1 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
        20: .line 482
            aload 1 /* timeout */
            ifnonnull 22
        21: .line 483
            goto 25
        22: .line 485
      StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
      StackMap stack:
            aload 1 /* timeout */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.isCancelled:()Z
            ifne 19
        23: .line 486
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
            aload 1 /* timeout */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
        end local 1 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
        24: .line 480
            goto 19
        25: .line 489
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$Worker.processCancelledTasks:()V
        26: .line 490
            return
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   27     0      this  Lio/netty/util/HashedWheelTimer$Worker;
            5   13     1  deadline  J
            7   13     3       idx  I
           10   13     4    bucket  Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
           16   17     1    bucket  Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
           20   24     1   timeout  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  private void transferTimeoutsToBuckets();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 495
            iconst_0
            istore 1 /* i */
        start local 1 // int i
         1: goto 14
         2: .line 496
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.timeouts:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
            astore 2 /* timeout */
        start local 2 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
         3: .line 497
            aload 2 /* timeout */
            ifnonnull 5
         4: .line 499
            goto 15
         5: .line 501
      StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
      StackMap stack:
            aload 2 /* timeout */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:()I
            iconst_1
            if_icmpne 7
         6: .line 503
            goto 13
         7: .line 506
      StackMap locals:
      StackMap stack:
            aload 2 /* timeout */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.deadline:J
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.tickDuration:J
            ldiv
            lstore 3 /* calculated */
        start local 3 // long calculated
         8: .line 507
            aload 2 /* timeout */
            lload 3 /* calculated */
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.tick:J
            lsub
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
            arraylength
            i2l
            ldiv
            putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.remainingRounds:J
         9: .line 509
            lload 3 /* calculated */
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.tick:J
            invokestatic java.lang.Math.max:(JJ)J
            lstore 5 /* ticks */
        start local 5 // long ticks
        10: .line 510
            lload 5 /* ticks */
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.mask:I
            i2l
            land
            l2i
            istore 7 /* stopIndex */
        start local 7 // int stopIndex
        11: .line 512
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.wheel:[Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
            iload 7 /* stopIndex */
            aaload
            astore 8 /* bucket */
        start local 8 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        12: .line 513
            aload 8 /* bucket */
            aload 2 /* timeout */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.addTimeout:(Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;)V
        end local 8 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        end local 7 // int stopIndex
        end local 5 // long ticks
        end local 3 // long calculated
        end local 2 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
        13: .line 495
      StackMap locals:
      StackMap stack:
            iinc 1 /* i */ 1
      StackMap locals:
      StackMap stack:
        14: iload 1 /* i */
            ldc 100000
            if_icmplt 2
        end local 1 // int i
        15: .line 515
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   16     0        this  Lio/netty/util/HashedWheelTimer$Worker;
            1   15     1           i  I
            3   13     2     timeout  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            8   13     3  calculated  J
           10   13     5       ticks  J
           11   13     7   stopIndex  I
           12   13     8      bucket  Lio/netty/util/HashedWheelTimer$HashedWheelBucket;

  private void processCancelledTasks();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 519
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.cancelledTimeouts:Ljava/util/Queue;
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast io.netty.util.HashedWheelTimer$HashedWheelTimeout
            astore 1 /* timeout */
        start local 1 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
         1: .line 520
            aload 1 /* timeout */
            ifnonnull 3
         2: .line 522
            goto 9
         3: .line 525
      StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelTimeout
      StackMap stack:
            aload 1 /* timeout */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.remove:()V
         4: .line 526
            goto 0
      StackMap locals:
      StackMap stack: java.lang.Throwable
         5: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         6: .line 527
            getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isWarnEnabled:()Z
            ifeq 0
         7: .line 528
            getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
            ldc "An exception was thrown while process a cancellation task"
            aload 2 /* t */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 2 // java.lang.Throwable t
        end local 1 // io.netty.util.HashedWheelTimer$HashedWheelTimeout timeout
         8: .line 518
            goto 0
         9: .line 532
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   10     0     this  Lio/netty/util/HashedWheelTimer$Worker;
            1    8     1  timeout  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            6    8     2        t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           3     4       5  Class java.lang.Throwable

  private long waitForNextTick();
    descriptor: ()J
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=7, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 541
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.tickDuration:J
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.tick:J
            lconst_1
            ladd
            lmul
            lstore 1 /* deadline */
        start local 1 // long deadline
         1: .line 544
      StackMap locals: long
      StackMap stack:
            invokestatic java.lang.System.nanoTime:()J
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.startTime:J
            lsub
            lstore 3 /* currentTime */
        start local 3 // long currentTime
         2: .line 545
            lload 1 /* deadline */
            lload 3 /* currentTime */
            lsub
            ldc 999999
            ladd
            ldc 1000000
            ldiv
            lstore 5 /* sleepTimeMs */
        start local 5 // long sleepTimeMs
         3: .line 547
            lload 5 /* sleepTimeMs */
            lconst_0
            lcmp
            ifgt 7
         4: .line 548
            lload 3 /* currentTime */
            ldc -9223372036854775808
            lcmp
            ifne 6
         5: .line 549
            ldc -9223372036854775807
            lreturn
         6: .line 551
      StackMap locals: long long
      StackMap stack:
            lload 3 /* currentTime */
            lreturn
         7: .line 560
      StackMap locals:
      StackMap stack:
            invokestatic io.netty.util.internal.PlatformDependent.isWindows:()Z
            ifeq 9
         8: .line 561
            lload 5 /* sleepTimeMs */
            ldc 10
            ldiv
            ldc 10
            lmul
            lstore 5 /* sleepTimeMs */
         9: .line 565
      StackMap locals:
      StackMap stack:
            lload 5 /* sleepTimeMs */
            invokestatic java.lang.Thread.sleep:(J)V
        10: .line 566
            goto 1
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
        11: pop
        12: .line 567
            getstatic io.netty.util.HashedWheelTimer.WORKER_STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.this$0:Lio/netty/util/HashedWheelTimer;
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.get:(Ljava/lang/Object;)I
            iconst_2
            if_icmpne 1
        13: .line 568
            ldc -9223372036854775808
            lreturn
        end local 5 // long sleepTimeMs
        end local 3 // long currentTime
        end local 1 // long deadline
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   14     0         this  Lio/netty/util/HashedWheelTimer$Worker;
            1   14     1     deadline  J
            2   14     3  currentTime  J
            3   14     5  sleepTimeMs  J
      Exception table:
        from    to  target  type
           9    10      11  Class java.lang.InterruptedException

  public java.util.Set<io.netty.util.Timeout> unprocessedTimeouts();
    descriptor: ()Ljava/util/Set;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$Worker this
         0: .line 575
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$Worker.unprocessedTimeouts:Ljava/util/Set;
            invokestatic java.util.Collections.unmodifiableSet:(Ljava/util/Set;)Ljava/util/Set;
            areturn
        end local 0 // io.netty.util.HashedWheelTimer$Worker this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/HashedWheelTimer$Worker;
    Signature: ()Ljava/util/Set<Lio/netty/util/Timeout;>;
}
SourceFile: "HashedWheelTimer.java"
NestHost: io.netty.util.HashedWheelTimer
InnerClasses:
  private final HashedWheelBucket = io.netty.util.HashedWheelTimer$HashedWheelBucket of io.netty.util.HashedWheelTimer
  private final HashedWheelTimeout = io.netty.util.HashedWheelTimer$HashedWheelTimeout of io.netty.util.HashedWheelTimer
  private final Worker = io.netty.util.HashedWheelTimer$Worker of io.netty.util.HashedWheelTimer