final class io.netty.util.HashedWheelTimer$HashedWheelTimeout implements io.netty.util.Timeout
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: io.netty.util.HashedWheelTimer$HashedWheelTimeout
  super_class: java.lang.Object
{
  private static final int ST_INIT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int ST_CANCELLED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  private static final int ST_EXPIRED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final java.util.concurrent.atomic.AtomicIntegerFieldUpdater<io.netty.util.HashedWheelTimer$HashedWheelTimeout> STATE_UPDATER;
    descriptor: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater<Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;>;

  private final io.netty.util.HashedWheelTimer timer;
    descriptor: Lio/netty/util/HashedWheelTimer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final io.netty.util.TimerTask task;
    descriptor: Lio/netty/util/TimerTask;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private volatile int state;
    descriptor: I
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  long remainingRounds;
    descriptor: J
    flags: (0x0000) 

  io.netty.util.HashedWheelTimer$HashedWheelTimeout next;
    descriptor: Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
    flags: (0x0000) 

  io.netty.util.HashedWheelTimer$HashedWheelTimeout prev;
    descriptor: Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
    flags: (0x0000) 

  io.netty.util.HashedWheelTimer$HashedWheelBucket bucket;
    descriptor: Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
    flags: (0x0000) 

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 585
            ldc Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            ldc "state"
            invokestatic java.util.concurrent.atomic.AtomicIntegerFieldUpdater.newUpdater:(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
         1: .line 584
            putstatic io.netty.util.HashedWheelTimer$HashedWheelTimeout.STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
         2: .line 585
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(io.netty.util.HashedWheelTimer, io.netty.util.TimerTask, long);
    descriptor: (Lio/netty/util/HashedWheelTimer;Lio/netty/util/TimerTask;J)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=4
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
        start local 1 // io.netty.util.HashedWheelTimer timer
        start local 2 // io.netty.util.TimerTask task
        start local 3 // long deadline
         0: .line 606
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 592
            aload 0 /* this */
            iconst_0
            putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:I
         2: .line 607
            aload 0 /* this */
            aload 1 /* timer */
            putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.timer:Lio/netty/util/HashedWheelTimer;
         3: .line 608
            aload 0 /* this */
            aload 2 /* task */
            putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.task:Lio/netty/util/TimerTask;
         4: .line 609
            aload 0 /* this */
            lload 3 /* deadline */
            putfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.deadline:J
         5: .line 610
            return
        end local 3 // long deadline
        end local 2 // io.netty.util.TimerTask task
        end local 1 // io.netty.util.HashedWheelTimer timer
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0      this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            0    6     1     timer  Lio/netty/util/HashedWheelTimer;
            0    6     2      task  Lio/netty/util/TimerTask;
            0    6     3  deadline  J
    MethodParameters:
          Name  Flags
      timer     
      task      
      deadline  

  public io.netty.util.Timer timer();
    descriptor: ()Lio/netty/util/Timer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 614
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.timer:Lio/netty/util/HashedWheelTimer;
            areturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  public io.netty.util.TimerTask task();
    descriptor: ()Lio/netty/util/TimerTask;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 619
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.task:Lio/netty/util/TimerTask;
            areturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  public boolean cancel();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 625
            aload 0 /* this */
            iconst_0
            iconst_1
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.compareAndSetState:(II)Z
            ifne 2
         1: .line 626
            iconst_0
            ireturn
         2: .line 631
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.timer:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.cancelledTimeouts:Ljava/util/Queue;
            aload 0 /* this */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
         3: .line 632
            iconst_1
            ireturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  void remove();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 636
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.bucket:Lio/netty/util/HashedWheelTimer$HashedWheelBucket;
            astore 1 /* bucket */
        start local 1 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
         1: .line 637
            aload 1 /* bucket */
            ifnull 4
         2: .line 638
            aload 1 /* bucket */
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelBucket.remove:(Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;)Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            pop
         3: .line 639
            goto 5
         4: .line 640
      StackMap locals: io.netty.util.HashedWheelTimer$HashedWheelBucket
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.timer:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.pendingTimeouts:Ljava/util/concurrent/atomic/AtomicLong;
            invokevirtual java.util.concurrent.atomic.AtomicLong.decrementAndGet:()J
            pop2
         5: .line 642
      StackMap locals:
      StackMap stack:
            return
        end local 1 // io.netty.util.HashedWheelTimer$HashedWheelBucket bucket
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    6     0    this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            1    6     1  bucket  Lio/netty/util/HashedWheelTimer$HashedWheelBucket;

  public boolean compareAndSetState(int, int);
    descriptor: (II)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
        start local 1 // int expected
        start local 2 // int state
         0: .line 645
            getstatic io.netty.util.HashedWheelTimer$HashedWheelTimeout.STATE_UPDATER:Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
            aload 0 /* this */
            iload 1 /* expected */
            iload 2 /* state */
            invokevirtual java.util.concurrent.atomic.AtomicIntegerFieldUpdater.compareAndSet:(Ljava/lang/Object;II)Z
            ireturn
        end local 2 // int state
        end local 1 // int expected
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            0    1     1  expected  I
            0    1     2     state  I
    MethodParameters:
          Name  Flags
      expected  
      state     

  public int state();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 649
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:I
            ireturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  public boolean isCancelled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 654
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:()I
            iconst_1
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  public boolean isExpired();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 659
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.state:()I
            iconst_2
            if_icmpne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;

  public void expire();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 663
            aload 0 /* this */
            iconst_0
            iconst_2
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.compareAndSetState:(II)Z
            ifne 2
         1: .line 664
            return
         2: .line 668
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.task:Lio/netty/util/TimerTask;
            aload 0 /* this */
            invokeinterface io.netty.util.TimerTask.run:(Lio/netty/util/Timeout;)V
         3: .line 669
            goto 7
      StackMap locals:
      StackMap stack: java.lang.Throwable
         4: astore 1 /* t */
        start local 1 // java.lang.Throwable t
         5: .line 670
            getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
            invokeinterface io.netty.util.internal.logging.InternalLogger.isWarnEnabled:()Z
            ifeq 7
         6: .line 671
            getstatic io.netty.util.HashedWheelTimer.logger:Lio/netty/util/internal/logging/InternalLogger;
            new java.lang.StringBuilder
            dup
            ldc "An exception was thrown by "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc Lio/netty/util/TimerTask;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            bipush 46
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aload 1 /* t */
            invokeinterface io.netty.util.internal.logging.InternalLogger.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.lang.Throwable t
         7: .line 674
      StackMap locals:
      StackMap stack:
            return
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            5    7     1     t  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     3       4  Class java.lang.Throwable

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
         0: .line 678
            invokestatic java.lang.System.nanoTime:()J
            lstore 1 /* currentTime */
        start local 1 // long currentTime
         1: .line 679
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.deadline:J
            lload 1 /* currentTime */
            lsub
            aload 0 /* this */
            getfield io.netty.util.HashedWheelTimer$HashedWheelTimeout.timer:Lio/netty/util/HashedWheelTimer;
            getfield io.netty.util.HashedWheelTimer.startTime:J
            ladd
            lstore 3 /* remaining */
        start local 3 // long remaining
         2: .line 681
            new java.lang.StringBuilder
            dup
            sipush 192
            invokespecial java.lang.StringBuilder.<init>:(I)V
         3: .line 682
            aload 0 /* this */
            invokestatic io.netty.util.internal.StringUtil.simpleClassName:(Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         4: .line 683
            bipush 40
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
         5: .line 684
            ldc "deadline: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         6: .line 681
            astore 5 /* buf */
        start local 5 // java.lang.StringBuilder buf
         7: .line 685
            lload 3 /* remaining */
            lconst_0
            lcmp
            ifle 11
         8: .line 686
            aload 5 /* buf */
            lload 3 /* remaining */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
         9: .line 687
            ldc " ns later"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        10: .line 688
            goto 16
      StackMap locals: long long java.lang.StringBuilder
      StackMap stack:
        11: lload 3 /* remaining */
            lconst_0
            lcmp
            ifge 15
        12: .line 689
            aload 5 /* buf */
            lload 3 /* remaining */
            lneg
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
        13: .line 690
            ldc " ns ago"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        14: .line 691
            goto 16
        15: .line 692
      StackMap locals:
      StackMap stack:
            aload 5 /* buf */
            ldc "now"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        16: .line 695
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.isCancelled:()Z
            ifeq 18
        17: .line 696
            aload 5 /* buf */
            ldc ", cancelled"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        18: .line 699
      StackMap locals:
      StackMap stack:
            aload 5 /* buf */
            ldc ", task: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 700
            aload 0 /* this */
            invokevirtual io.netty.util.HashedWheelTimer$HashedWheelTimeout.task:()Lio/netty/util/TimerTask;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
        20: .line 701
            bipush 41
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
        21: .line 702
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        22: .line 699
            areturn
        end local 5 // java.lang.StringBuilder buf
        end local 3 // long remaining
        end local 1 // long currentTime
        end local 0 // io.netty.util.HashedWheelTimer$HashedWheelTimeout this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   23     0         this  Lio/netty/util/HashedWheelTimer$HashedWheelTimeout;
            1   23     1  currentTime  J
            2   23     3    remaining  J
            7   23     5          buf  Ljava/lang/StringBuilder;
}
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