class sun.misc.TimerThread extends java.lang.Thread
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: sun.misc.TimerThread
  super_class: java.lang.Thread
{
  public static boolean debug;
    descriptor: Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC

  static sun.misc.TimerThread timerThread;
    descriptor: Lsun/misc/TimerThread;
    flags: (0x0008) ACC_STATIC

  static boolean notified;
    descriptor: Z
    flags: (0x0008) ACC_STATIC

  static sun.misc.Timer timerQueue;
    descriptor: Lsun/misc/Timer;
    flags: (0x0008) ACC_STATIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 351
            iconst_0
            putstatic sun.misc.TimerThread.debug:Z
         1: .line 363
            iconst_0
            putstatic sun.misc.TimerThread.notified:Z
         2: .line 416
            aconst_null
            putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // sun.misc.TimerThread this
         0: .line 366
            aload 0 /* this */
            ldc "TimerThread"
            invokespecial java.lang.Thread.<init>:(Ljava/lang/String;)V
         1: .line 367
            aload 0 /* this */
            putstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
         2: .line 368
            aload 0 /* this */
            invokevirtual sun.misc.TimerThread.start:()V
         3: .line 369
            return
        end local 0 // sun.misc.TimerThread this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lsun/misc/TimerThread;

  public synchronized void run();
    descriptor: ()V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // sun.misc.TimerThread this
         0: .line 375
            goto 4
         1: .line 377
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual java.lang.Object.wait:()V
         2: .line 378
            goto 4
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
         3: pop
         4: .line 375
      StackMap locals:
      StackMap stack:
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            ifnull 1
         5: .line 382
            iconst_0
            putstatic sun.misc.TimerThread.notified:Z
         6: .line 383
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            getfield sun.misc.Timer.sleepUntil:J
            invokestatic java.lang.System.currentTimeMillis:()J
            lsub
            lstore 1 /* delay */
        start local 1 // long delay
         7: .line 384
            lload 1 /* delay */
            lconst_0
            lcmp
            ifle 11
         8: .line 386
            aload 0 /* this */
            lload 1 /* delay */
            invokevirtual java.lang.Object.wait:(J)V
         9: .line 387
            goto 11
      StackMap locals: sun.misc.TimerThread long
      StackMap stack: java.lang.InterruptedException
        10: pop
        11: .line 392
      StackMap locals:
      StackMap stack:
            getstatic sun.misc.TimerThread.notified:Z
            ifne 23
        12: .line 393
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            astore 3 /* timer */
        start local 3 // sun.misc.Timer timer
        13: .line 394
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
        14: .line 396
            aload 3 /* timer */
            aload 3 /* timer */
            getfield sun.misc.Timer.sleepUntil:J
        15: .line 395
            invokestatic sun.misc.TimerTickThread.call:(Lsun/misc/Timer;J)Lsun/misc/TimerTickThread;
            astore 4 /* thr */
        start local 4 // sun.misc.TimerTickThread thr
        16: .line 397
            getstatic sun.misc.TimerThread.debug:Z
            ifeq 23
        17: .line 398
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 3 /* timer */
            getfield sun.misc.Timer.sleepUntil:J
            lsub
            lstore 5 /* delta */
        start local 5 // long delta
        18: .line 399
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            ldc "tick("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* thr */
            invokevirtual sun.misc.TimerTickThread.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 400
            aload 3 /* timer */
            getfield sun.misc.Timer.interval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 5 /* delta */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ")"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        20: .line 399
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        21: .line 401
            lload 5 /* delta */
            ldc 250
            lcmp
            ifle 23
        22: .line 402
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "*** BIG DELAY ***"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 5 // long delta
        end local 4 // sun.misc.TimerTickThread thr
        end local 3 // sun.misc.Timer timer
        end local 1 // long delay
        23: .line 372
      StackMap locals:
      StackMap stack:
            goto 4
        end local 0 // sun.misc.TimerThread this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   24     0   this  Lsun/misc/TimerThread;
            7   23     1  delay  J
           13   23     3  timer  Lsun/misc/Timer;
           16   23     4    thr  Lsun/misc/TimerTickThread;
           18   23     5  delta  J
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.InterruptedException
           8     9      10  Class java.lang.InterruptedException

  protected static void enqueue(sun.misc.Timer);
    descriptor: (Lsun/misc/Timer;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // sun.misc.Timer timer
         0: .line 427
            aconst_null
            astore 1 /* prev */
        start local 1 // sun.misc.Timer prev
         1: .line 428
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            astore 2 /* cur */
        start local 2 // sun.misc.Timer cur
         2: .line 430
            aload 2 /* cur */
            ifnull 3
            aload 0 /* timer */
            getfield sun.misc.Timer.sleepUntil:J
            aload 2 /* cur */
            getfield sun.misc.Timer.sleepUntil:J
            lcmp
            ifgt 8
         3: .line 432
      StackMap locals: sun.misc.Timer sun.misc.Timer
      StackMap stack:
            aload 0 /* timer */
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            putfield sun.misc.Timer.next:Lsun/misc/Timer;
         4: .line 433
            aload 0 /* timer */
            putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
         5: .line 434
            iconst_1
            putstatic sun.misc.TimerThread.notified:Z
         6: .line 435
            getstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
            invokevirtual java.lang.Object.notify:()V
         7: .line 436
            goto 14
         8: .line 438
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            astore 1 /* prev */
         9: .line 439
            aload 2 /* cur */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            astore 2 /* cur */
        10: .line 440
            aload 2 /* cur */
            ifnull 12
            aload 0 /* timer */
            getfield sun.misc.Timer.sleepUntil:J
            aload 2 /* cur */
            getfield sun.misc.Timer.sleepUntil:J
        11: .line 437
            lcmp
            ifgt 8
        12: .line 442
      StackMap locals:
      StackMap stack:
            aload 0 /* timer */
            aload 2 /* cur */
            putfield sun.misc.Timer.next:Lsun/misc/Timer;
        13: .line 443
            aload 1 /* prev */
            aload 0 /* timer */
            putfield sun.misc.Timer.next:Lsun/misc/Timer;
        14: .line 445
      StackMap locals:
      StackMap stack:
            getstatic sun.misc.TimerThread.debug:Z
            ifeq 26
        15: .line 446
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* now */
        start local 3 // long now
        16: .line 448
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        17: .line 449
            ldc ": enqueue "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        18: .line 448
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        19: .line 450
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            astore 2 /* cur */
        20: .line 451
            goto 24
        21: .line 452
      StackMap locals: long
      StackMap stack:
            aload 2 /* cur */
            getfield sun.misc.Timer.sleepUntil:J
            lload 3 /* now */
            lsub
            lstore 5 /* delta */
        start local 5 // long delta
        22: .line 453
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* cur */
            getfield sun.misc.Timer.interval:J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 5 /* delta */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ") "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        23: .line 454
            aload 2 /* cur */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            astore 2 /* cur */
        end local 5 // long delta
        24: .line 451
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            ifnonnull 21
        25: .line 456
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        end local 3 // long now
        26: .line 458
      StackMap locals:
      StackMap stack:
            return
        end local 2 // sun.misc.Timer cur
        end local 1 // sun.misc.Timer prev
        end local 0 // sun.misc.Timer timer
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   27     0  timer  Lsun/misc/Timer;
            1   27     1   prev  Lsun/misc/Timer;
            2   27     2    cur  Lsun/misc/Timer;
           16   26     3    now  J
           22   24     5  delta  J
    MethodParameters:
       Name  Flags
      timer  

  protected static boolean dequeue(sun.misc.Timer);
    descriptor: (Lsun/misc/Timer;)Z
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // sun.misc.Timer timer
         0: .line 466
            aconst_null
            astore 1 /* prev */
        start local 1 // sun.misc.Timer prev
         1: .line 467
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            astore 2 /* cur */
        start local 2 // sun.misc.Timer cur
         2: .line 469
            goto 5
         3: .line 470
      StackMap locals: sun.misc.Timer sun.misc.Timer
      StackMap stack:
            aload 2 /* cur */
            astore 1 /* prev */
         4: .line 471
            aload 2 /* cur */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            astore 2 /* cur */
         5: .line 469
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            ifnull 6
            aload 2 /* cur */
            aload 0 /* timer */
            if_acmpne 3
         6: .line 473
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            ifnonnull 12
         7: .line 474
            getstatic sun.misc.TimerThread.debug:Z
            ifeq 11
         8: .line 475
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         9: .line 476
            ldc ": dequeue "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ": no-op"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        10: .line 475
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        11: .line 478
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        12: .line 479
      StackMap locals:
      StackMap stack:
            aload 1 /* prev */
            ifnonnull 17
        13: .line 480
            aload 0 /* timer */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            putstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
        14: .line 481
            iconst_1
            putstatic sun.misc.TimerThread.notified:Z
        15: .line 482
            getstatic sun.misc.TimerThread.timerThread:Lsun/misc/TimerThread;
            invokevirtual java.lang.Object.notify:()V
        16: .line 483
            goto 18
        17: .line 484
      StackMap locals:
      StackMap stack:
            aload 1 /* prev */
            aload 0 /* timer */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            putfield sun.misc.Timer.next:Lsun/misc/Timer;
        18: .line 486
      StackMap locals:
      StackMap stack:
            aload 0 /* timer */
            aconst_null
            putfield sun.misc.Timer.next:Lsun/misc/Timer;
        19: .line 487
            getstatic sun.misc.TimerThread.debug:Z
            ifeq 31
        20: .line 488
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 3 /* now */
        start local 3 // long now
        21: .line 490
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        22: .line 491
            ldc ": dequeue "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ": "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        23: .line 490
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        24: .line 492
            getstatic sun.misc.TimerThread.timerQueue:Lsun/misc/Timer;
            astore 2 /* cur */
        25: .line 493
            goto 29
        26: .line 494
      StackMap locals: long
      StackMap stack:
            aload 2 /* cur */
            getfield sun.misc.Timer.sleepUntil:J
            lload 3 /* now */
            lsub
            lstore 5 /* delta */
        start local 5 // long delta
        27: .line 495
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            aload 2 /* cur */
            getfield sun.misc.Timer.interval:J
            invokestatic java.lang.String.valueOf:(J)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc "("
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            lload 5 /* delta */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ") "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        28: .line 496
            aload 2 /* cur */
            getfield sun.misc.Timer.next:Lsun/misc/Timer;
            astore 2 /* cur */
        end local 5 // long delta
        29: .line 493
      StackMap locals:
      StackMap stack:
            aload 2 /* cur */
            ifnonnull 26
        30: .line 498
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            invokevirtual java.io.PrintStream.println:()V
        end local 3 // long now
        31: .line 500
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 2 // sun.misc.Timer cur
        end local 1 // sun.misc.Timer prev
        end local 0 // sun.misc.Timer timer
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   32     0  timer  Lsun/misc/Timer;
            1   32     1   prev  Lsun/misc/Timer;
            2   32     2    cur  Lsun/misc/Timer;
           21   31     3    now  J
           27   29     5  delta  J
    MethodParameters:
       Name  Flags
      timer  

  protected static void requeue(sun.misc.Timer);
    descriptor: (Lsun/misc/Timer;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=5, locals=3, args_size=1
        start local 0 // sun.misc.Timer timer
         0: .line 511
            aload 0 /* timer */
            getfield sun.misc.Timer.stopped:Z
            ifne 8
         1: .line 512
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 1 /* now */
        start local 1 // long now
         2: .line 513
            aload 0 /* timer */
            getfield sun.misc.Timer.regular:Z
            ifeq 5
         3: .line 514
            aload 0 /* timer */
            dup
            getfield sun.misc.Timer.sleepUntil:J
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            ladd
            putfield sun.misc.Timer.sleepUntil:J
         4: .line 515
            goto 6
         5: .line 516
      StackMap locals: long
      StackMap stack:
            aload 0 /* timer */
            lload 1 /* now */
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            ladd
            putfield sun.misc.Timer.sleepUntil:J
         6: .line 518
      StackMap locals:
      StackMap stack:
            aload 0 /* timer */
            invokestatic sun.misc.TimerThread.enqueue:(Lsun/misc/Timer;)V
        end local 1 // long now
         7: .line 519
            goto 12
      StackMap locals:
      StackMap stack:
         8: getstatic sun.misc.TimerThread.debug:Z
            ifeq 12
         9: .line 520
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            new java.lang.StringBuilder
            dup
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            invokevirtual java.lang.Thread.getName:()Ljava/lang/String;
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        10: .line 521
            ldc ": requeue "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* timer */
            getfield sun.misc.Timer.interval:J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc ": no-op"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        11: .line 520
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        12: .line 523
      StackMap locals:
      StackMap stack:
            return
        end local 0 // sun.misc.Timer timer
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0   13     0  timer  Lsun/misc/Timer;
            2    7     1    now  J
    MethodParameters:
       Name  Flags
      timer  
}
SourceFile: "Timer.java"