class com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable extends com.google.common.util.concurrent.ForwardingFuture<java.lang.Void> implements java.util.concurrent.Callable<java.lang.Void>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable
  super_class: com.google.common.util.concurrent.ForwardingFuture
{
  private final java.lang.Runnable wrappedRunnable;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private final com.google.common.util.concurrent.AbstractService service;
    descriptor: Lcom/google/common/util/concurrent/AbstractService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.concurrent.locks.ReentrantLock lock;
    descriptor: Ljava/util/concurrent/locks/ReentrantLock;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private java.util.concurrent.Future<java.lang.Void> currentFuture;
    descriptor: Ljava/util/concurrent/Future;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/Future<Ljava/lang/Void;>;
    RuntimeInvisibleAnnotations: 
      com.google.errorprone.annotations.concurrent.GuardedBy(value = "lock")
    RuntimeVisibleTypeAnnotations: 
      FIELD
        org.checkerframework.checker.nullness.qual.Nullable()

  final com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler this$1;
    descriptor: Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler;
    flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC

  void <init>(com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler, com.google.common.util.concurrent.AbstractService, java.util.concurrent.ScheduledExecutorService, java.lang.Runnable);
    descriptor: (Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler;Lcom/google/common/util/concurrent/AbstractService;Ljava/util/concurrent/ScheduledExecutorService;Ljava/lang/Runnable;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
        start local 2 // com.google.common.util.concurrent.AbstractService service
        start local 3 // java.util.concurrent.ScheduledExecutorService executor
        start local 4 // java.lang.Runnable runnable
         0: .line 472
            aload 0 /* this */
            aload 1
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.this$1:Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler;
         1: .line 471
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.ForwardingFuture.<init>:()V
         2: .line 465
            aload 0 /* this */
            new java.util.concurrent.locks.ReentrantLock
            dup
            invokespecial java.util.concurrent.locks.ReentrantLock.<init>:()V
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
         3: .line 473
            aload 0 /* this */
            aload 4 /* runnable */
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.wrappedRunnable:Ljava/lang/Runnable;
         4: .line 474
            aload 0 /* this */
            aload 3 /* executor */
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.executor:Ljava/util/concurrent/ScheduledExecutorService;
         5: .line 475
            aload 0 /* this */
            aload 2 /* service */
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.service:Lcom/google/common/util/concurrent/AbstractService;
         6: .line 476
            return
        end local 4 // java.lang.Runnable runnable
        end local 3 // java.util.concurrent.ScheduledExecutorService executor
        end local 2 // com.google.common.util.concurrent.AbstractService service
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    7     0      this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
            0    7     2   service  Lcom/google/common/util/concurrent/AbstractService;
            0    7     3  executor  Ljava/util/concurrent/ScheduledExecutorService;
            0    7     4  runnable  Ljava/lang/Runnable;
    MethodParameters:
          Name  Flags
      this$0    final
      service   
      executor  
      runnable  

  public java.lang.Void call();
    descriptor: ()Ljava/lang/Void;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
         0: .line 480
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.wrappedRunnable:Ljava/lang/Runnable;
            invokeinterface java.lang.Runnable.run:()V
         1: .line 481
            aload 0 /* this */
            invokevirtual com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.reschedule:()V
         2: .line 482
            aconst_null
            areturn
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
    Exceptions:
      throws java.lang.Exception

  public void reschedule();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
         0: .line 490
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.this$1:Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler;
            invokevirtual com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler.getNextSchedule:()Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$Schedule;
            astore 1 /* schedule */
        start local 1 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule schedule
         1: .line 491
            goto 5
        end local 1 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule schedule
      StackMap locals:
      StackMap stack: java.lang.Throwable
         2: astore 2 /* t */
        start local 2 // java.lang.Throwable t
         3: .line 492
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.service:Lcom/google/common/util/concurrent/AbstractService;
            aload 2 /* t */
            invokevirtual com.google.common.util.concurrent.AbstractService.notifyFailed:(Ljava/lang/Throwable;)V
         4: .line 493
            return
        end local 2 // java.lang.Throwable t
        start local 1 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule schedule
         5: .line 499
      StackMap locals: com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule
      StackMap stack:
            aconst_null
            astore 2 /* scheduleFailure */
        start local 2 // java.lang.Throwable scheduleFailure
         6: .line 500
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         7: .line 502
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.currentFuture:Ljava/util/concurrent/Future;
            ifnull 8
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.currentFuture:Ljava/util/concurrent/Future;
            invokeinterface java.util.concurrent.Future.isCancelled:()Z
            ifne 16
         8: .line 503
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.executor:Ljava/util/concurrent/ScheduledExecutorService;
            aload 0 /* this */
            aload 1 /* schedule */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule.delay:J
            aload 1 /* schedule */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule.unit:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ScheduledExecutorService.schedule:(Ljava/util/concurrent/Callable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            putfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.currentFuture:Ljava/util/concurrent/Future;
         9: .line 505
            goto 16
      StackMap locals:
      StackMap stack: java.lang.Throwable
        10: astore 3 /* e */
        start local 3 // java.lang.Throwable e
        11: .line 514
            aload 3 /* e */
            astore 2 /* scheduleFailure */
        end local 3 // java.lang.Throwable e
        12: .line 516
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
            goto 17
        13: .line 515
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 4
        14: .line 516
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        15: .line 517
            aload 4
            athrow
        16: .line 516
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
        17: .line 519
      StackMap locals:
      StackMap stack:
            aload 2 /* scheduleFailure */
            ifnull 19
        18: .line 520
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.service:Lcom/google/common/util/concurrent/AbstractService;
            aload 2 /* scheduleFailure */
            invokevirtual com.google.common.util.concurrent.AbstractService.notifyFailed:(Ljava/lang/Throwable;)V
        19: .line 522
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable scheduleFailure
        end local 1 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule schedule
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   20     0             this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
            1    2     1         schedule  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$Schedule;
            5   20     1         schedule  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$Schedule;
            3    5     2                t  Ljava/lang/Throwable;
            6   20     2  scheduleFailure  Ljava/lang/Throwable;
           11   12     3                e  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.Throwable
           7     9      10  Class java.lang.Throwable
           7    12      13  any

  public boolean cancel(boolean);
    descriptor: (Z)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
        start local 1 // boolean mayInterruptIfRunning
         0: .line 529
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 531
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.currentFuture:Ljava/util/concurrent/Future;
            iload 1 /* mayInterruptIfRunning */
            invokeinterface java.util.concurrent.Future.cancel:(Z)Z
            istore 3
         2: .line 533
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         3: .line 531
            iload 3
            ireturn
         4: .line 532
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 2
         5: .line 533
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         6: .line 534
            aload 2
            athrow
        end local 1 // boolean mayInterruptIfRunning
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0    7     0                   this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
            0    7     1  mayInterruptIfRunning  Z
      Exception table:
        from    to  target  type
           1     2       4  any
    MethodParameters:
                       Name  Flags
      mayInterruptIfRunning  

  public boolean isCancelled();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=3, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
         0: .line 539
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.lock:()V
         1: .line 541
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.currentFuture:Ljava/util/concurrent/Future;
            invokeinterface java.util.concurrent.Future.isCancelled:()Z
            istore 2
         2: .line 543
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         3: .line 541
            iload 2
            ireturn
         4: .line 542
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1
         5: .line 543
            aload 0 /* this */
            getfield com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.lock:Ljava/util/concurrent/locks/ReentrantLock;
            invokevirtual java.util.concurrent.locks.ReentrantLock.unlock:()V
         6: .line 544
            aload 1
            athrow
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
      Exception table:
        from    to  target  type
           1     2       4  any

  protected java.util.concurrent.Future<java.lang.Void> delegate();
    descriptor: ()Ljava/util/concurrent/Future;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
         0: .line 549
            new java.lang.UnsupportedOperationException
            dup
         1: .line 550
            ldc "Only cancel and isCancelled is supported by this future"
         2: .line 549
            invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/common/util/concurrent/AbstractScheduledService$CustomScheduler$ReschedulableCallable;
    Signature: ()Ljava/util/concurrent/Future<Ljava/lang/Void;>;

  protected java.lang.Object delegate();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1044) ACC_PROTECTED, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.delegate:()Ljava/util/concurrent/Future;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public java.lang.Object call();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable.call:()Ljava/lang/Void;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.Exception
}
Signature: Lcom/google/common/util/concurrent/ForwardingFuture<Ljava/lang/Void;>;Ljava/util/concurrent/Callable<Ljava/lang/Void;>;
SourceFile: "AbstractScheduledService.java"
NestHost: com.google.common.util.concurrent.AbstractScheduledService
InnerClasses:
  public abstract CustomScheduler = com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler of com.google.common.util.concurrent.AbstractScheduledService
  private ReschedulableCallable = com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$ReschedulableCallable of com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler
  protected final Schedule = com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler$Schedule of com.google.common.util.concurrent.AbstractScheduledService$CustomScheduler