public abstract class java.time.Clock
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: java.time.Clock
  super_class: java.lang.Object
{
  public static java.time.Clock systemUTC();
    descriptor: ()Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 161
            getstatic java.time.Clock$SystemClock.UTC:Ljava/time/Clock$SystemClock;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.time.Clock systemDefaultZone();
    descriptor: ()Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 184
            new java.time.Clock$SystemClock
            dup
            invokestatic java.time.ZoneId.systemDefault:()Ljava/time/ZoneId;
            invokespecial java.time.Clock$SystemClock.<init>:(Ljava/time/ZoneId;)V
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static java.time.Clock system(java.time.ZoneId);
    descriptor: (Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.time.ZoneId zone
         0: .line 203
            aload 0 /* zone */
            ldc "zone"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 204
            aload 0 /* zone */
            getstatic java.time.ZoneOffset.UTC:Ljava/time/ZoneOffset;
            if_acmpne 3
         2: .line 205
            getstatic java.time.Clock$SystemClock.UTC:Ljava/time/Clock$SystemClock;
            areturn
         3: .line 207
      StackMap locals:
      StackMap stack:
            new java.time.Clock$SystemClock
            dup
            aload 0 /* zone */
            invokespecial java.time.Clock$SystemClock.<init>:(Ljava/time/ZoneId;)V
            areturn
        end local 0 // java.time.ZoneId zone
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  zone  Ljava/time/ZoneId;
    MethodParameters:
      Name  Flags
      zone  

  public static java.time.Clock tickMillis(java.time.ZoneId);
    descriptor: (Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.time.ZoneId zone
         0: .line 232
            new java.time.Clock$TickClock
            dup
            aload 0 /* zone */
            invokestatic java.time.Clock.system:(Ljava/time/ZoneId;)Ljava/time/Clock;
            ldc 1000000
            invokespecial java.time.Clock$TickClock.<init>:(Ljava/time/Clock;J)V
            areturn
        end local 0 // java.time.ZoneId zone
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  zone  Ljava/time/ZoneId;
    MethodParameters:
      Name  Flags
      zone  

  public static java.time.Clock tickSeconds(java.time.ZoneId);
    descriptor: (Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.time.ZoneId zone
         0: .line 256
            new java.time.Clock$TickClock
            dup
            aload 0 /* zone */
            invokestatic java.time.Clock.system:(Ljava/time/ZoneId;)Ljava/time/Clock;
            ldc 1000000000
            invokespecial java.time.Clock$TickClock.<init>:(Ljava/time/Clock;J)V
            areturn
        end local 0 // java.time.ZoneId zone
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  zone  Ljava/time/ZoneId;
    MethodParameters:
      Name  Flags
      zone  

  public static java.time.Clock tickMinutes(java.time.ZoneId);
    descriptor: (Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // java.time.ZoneId zone
         0: .line 279
            new java.time.Clock$TickClock
            dup
            aload 0 /* zone */
            invokestatic java.time.Clock.system:(Ljava/time/ZoneId;)Ljava/time/Clock;
            ldc 60000000000
            invokespecial java.time.Clock$TickClock.<init>:(Ljava/time/Clock;J)V
            areturn
        end local 0 // java.time.ZoneId zone
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  zone  Ljava/time/ZoneId;
    MethodParameters:
      Name  Flags
      zone  

  public static java.time.Clock tick(java.time.Clock, java.time.Duration);
    descriptor: (Ljava/time/Clock;Ljava/time/Duration;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // java.time.Clock baseClock
        start local 1 // java.time.Duration tickDuration
         0: .line 314
            aload 0 /* baseClock */
            ldc "baseClock"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 315
            aload 1 /* tickDuration */
            ldc "tickDuration"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 316
            aload 1 /* tickDuration */
            invokevirtual java.time.Duration.isNegative:()Z
            ifeq 4
         3: .line 317
            new java.lang.IllegalArgumentException
            dup
            ldc "Tick duration must not be negative"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 319
      StackMap locals:
      StackMap stack:
            aload 1 /* tickDuration */
            invokevirtual java.time.Duration.toNanos:()J
            lstore 2 /* tickNanos */
        start local 2 // long tickNanos
         5: .line 320
            lload 2 /* tickNanos */
            ldc 1000000
            lrem
            lconst_0
            lcmp
            ifeq 8
         6: .line 322
            ldc 1000000000
            lload 2 /* tickNanos */
            lrem
            lconst_0
            lcmp
            ifeq 8
         7: .line 325
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid tick duration"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 327
      StackMap locals: long
      StackMap stack:
            lload 2 /* tickNanos */
            lconst_1
            lcmp
            ifgt 10
         9: .line 328
            aload 0 /* baseClock */
            areturn
        10: .line 330
      StackMap locals:
      StackMap stack:
            new java.time.Clock$TickClock
            dup
            aload 0 /* baseClock */
            lload 2 /* tickNanos */
            invokespecial java.time.Clock$TickClock.<init>:(Ljava/time/Clock;J)V
            areturn
        end local 2 // long tickNanos
        end local 1 // java.time.Duration tickDuration
        end local 0 // java.time.Clock baseClock
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0     baseClock  Ljava/time/Clock;
            0   11     1  tickDuration  Ljava/time/Duration;
            5   11     2     tickNanos  J
    MethodParameters:
              Name  Flags
      baseClock     
      tickDuration  

  public static java.time.Clock fixed(java.time.Instant, java.time.ZoneId);
    descriptor: (Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.time.Instant fixedInstant
        start local 1 // java.time.ZoneId zone
         0: .line 349
            aload 0 /* fixedInstant */
            ldc "fixedInstant"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 350
            aload 1 /* zone */
            ldc "zone"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 351
            new java.time.Clock$FixedClock
            dup
            aload 0 /* fixedInstant */
            aload 1 /* zone */
            invokespecial java.time.Clock$FixedClock.<init>:(Ljava/time/Instant;Ljava/time/ZoneId;)V
            areturn
        end local 1 // java.time.ZoneId zone
        end local 0 // java.time.Instant fixedInstant
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0  fixedInstant  Ljava/time/Instant;
            0    3     1          zone  Ljava/time/ZoneId;
    MethodParameters:
              Name  Flags
      fixedInstant  
      zone          

  public static java.time.Clock offset(java.time.Clock, java.time.Duration);
    descriptor: (Ljava/time/Clock;Ljava/time/Duration;)Ljava/time/Clock;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.time.Clock baseClock
        start local 1 // java.time.Duration offsetDuration
         0: .line 375
            aload 0 /* baseClock */
            ldc "baseClock"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         1: .line 376
            aload 1 /* offsetDuration */
            ldc "offsetDuration"
            invokestatic java.util.Objects.requireNonNull:(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
            pop
         2: .line 377
            aload 1 /* offsetDuration */
            getstatic java.time.Duration.ZERO:Ljava/time/Duration;
            invokevirtual java.time.Duration.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 378
            aload 0 /* baseClock */
            areturn
         4: .line 380
      StackMap locals:
      StackMap stack:
            new java.time.Clock$OffsetClock
            dup
            aload 0 /* baseClock */
            aload 1 /* offsetDuration */
            invokespecial java.time.Clock$OffsetClock.<init>:(Ljava/time/Clock;Ljava/time/Duration;)V
            areturn
        end local 1 // java.time.Duration offsetDuration
        end local 0 // java.time.Clock baseClock
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0       baseClock  Ljava/time/Clock;
            0    5     1  offsetDuration  Ljava/time/Duration;
    MethodParameters:
                Name  Flags
      baseClock       
      offsetDuration  

  protected void <init>();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.time.Clock this
         0: .line 387
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 388
            return
        end local 0 // java.time.Clock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Ljava/time/Clock;

  public abstract java.time.ZoneId getZone();
    descriptor: ()Ljava/time/ZoneId;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public abstract java.time.Clock withZone(java.time.ZoneId);
    descriptor: (Ljava/time/ZoneId;)Ljava/time/Clock;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    MethodParameters:
      Name  Flags
      zone  

  public long millis();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.time.Clock this
         0: .line 432
            aload 0 /* this */
            invokevirtual java.time.Clock.instant:()Ljava/time/Instant;
            invokevirtual java.time.Instant.toEpochMilli:()J
            lreturn
        end local 0 // java.time.Clock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/time/Clock;

  public abstract java.time.Instant instant();
    descriptor: ()Ljava/time/Instant;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // java.time.Clock this
        start local 1 // java.lang.Object obj
         0: .line 459
            aload 0 /* this */
            aload 1 /* obj */
            invokespecial java.lang.Object.equals:(Ljava/lang/Object;)Z
            ireturn
        end local 1 // java.lang.Object obj
        end local 0 // java.time.Clock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/time/Clock;
            0    1     1   obj  Ljava/lang/Object;
    MethodParameters:
      Name  Flags
      obj   

  public int hashCode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // java.time.Clock this
         0: .line 473
            aload 0 /* this */
            invokespecial java.lang.Object.hashCode:()I
            ireturn
        end local 0 // java.time.Clock this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Ljava/time/Clock;
}
SourceFile: "Clock.java"
NestMembers:
  java.time.Clock$FixedClock  java.time.Clock$OffsetClock  java.time.Clock$SystemClock  java.time.Clock$TickClock
InnerClasses:
  final FixedClock = java.time.Clock$FixedClock of java.time.Clock
  final OffsetClock = java.time.Clock$OffsetClock of java.time.Clock
  final SystemClock = java.time.Clock$SystemClock of java.time.Clock
  final TickClock = java.time.Clock$TickClock of java.time.Clock