final class reactor.core.scheduler.ElasticScheduler$CachedService implements reactor.core.Disposable, reactor.core.Scannable
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: reactor.core.scheduler.ElasticScheduler$CachedService
  super_class: java.lang.Object
{
  final reactor.core.scheduler.ElasticScheduler parent;
    descriptor: Lreactor/core/scheduler/ElasticScheduler;
    flags: (0x0010) ACC_FINAL

  final java.util.concurrent.ScheduledExecutorService exec;
    descriptor: Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0010) ACC_FINAL

  void <init>(reactor.core.scheduler.ElasticScheduler);
    descriptor: (Lreactor/core/scheduler/ElasticScheduler;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
        start local 1 // reactor.core.scheduler.ElasticScheduler parent
         0: .line 245
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 246
            aload 0 /* this */
            aload 1 /* parent */
            putfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
         2: .line 247
            aload 1 /* parent */
            ifnull 5
         3: .line 248
            aload 0 /* this */
            aload 1 /* parent */
            aload 1 /* parent */
            invokevirtual reactor.core.scheduler.ElasticScheduler.createUndecoratedService:()Ljava/util/concurrent/ScheduledExecutorService;
            invokestatic reactor.core.scheduler.Schedulers.decorateExecutorService:(Lreactor/core/scheduler/Scheduler;Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;
            putfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
         4: .line 249
            goto 7
         5: .line 251
      StackMap locals: reactor.core.scheduler.ElasticScheduler$CachedService reactor.core.scheduler.ElasticScheduler
      StackMap stack:
            aload 0 /* this */
            invokestatic java.util.concurrent.Executors.newSingleThreadScheduledExecutor:()Ljava/util/concurrent/ScheduledExecutorService;
            putfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
         6: .line 252
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
            invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
            pop
         7: .line 254
      StackMap locals:
      StackMap stack:
            return
        end local 1 // reactor.core.scheduler.ElasticScheduler parent
        end local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lreactor/core/scheduler/ElasticScheduler$CachedService;
            0    8     1  parent  Lreactor/core/scheduler/ElasticScheduler;
    RuntimeVisibleParameterAnnotations: 
      0:
        reactor.util.annotation.Nullable()
    MethodParameters:
        Name  Flags
      parent  

  public void dispose();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=2, args_size=1
        start local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
         0: .line 258
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
            ifnull 9
         1: .line 259
            aload 0 /* this */
            getstatic reactor.core.scheduler.ElasticScheduler.SHUTDOWN:Lreactor/core/scheduler/ElasticScheduler$CachedService;
            if_acmpeq 9
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            getfield reactor.core.scheduler.ElasticScheduler.shutdown:Z
            ifne 9
         2: .line 261
            new reactor.core.scheduler.ElasticScheduler$ScheduledExecutorServiceExpiry
            dup
            aload 0 /* this */
         3: .line 262
            invokestatic java.lang.System.currentTimeMillis:()J
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            getfield reactor.core.scheduler.ElasticScheduler.ttlSeconds:I
            i2l
            ldc 1000
            lmul
            ladd
         4: .line 260
            invokespecial reactor.core.scheduler.ElasticScheduler$ScheduledExecutorServiceExpiry.<init>:(Lreactor/core/scheduler/ElasticScheduler$CachedService;J)V
            astore 1 /* e */
        start local 1 // reactor.core.scheduler.ElasticScheduler$ScheduledExecutorServiceExpiry e
         5: .line 263
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            getfield reactor.core.scheduler.ElasticScheduler.cache:Ljava/util/Deque;
            aload 1 /* e */
            invokeinterface java.util.Deque.offerLast:(Ljava/lang/Object;)Z
            pop
         6: .line 264
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            getfield reactor.core.scheduler.ElasticScheduler.shutdown:Z
            ifeq 9
         7: .line 265
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            getfield reactor.core.scheduler.ElasticScheduler.cache:Ljava/util/Deque;
            aload 1 /* e */
            invokeinterface java.util.Deque.remove:(Ljava/lang/Object;)Z
            ifeq 9
         8: .line 266
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
            invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
            pop
        end local 1 // reactor.core.scheduler.ElasticScheduler$ScheduledExecutorServiceExpiry e
         9: .line 271
      StackMap locals:
      StackMap stack:
            return
        end local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lreactor/core/scheduler/ElasticScheduler$CachedService;
            5    9     1     e  Lreactor/core/scheduler/ElasticScheduler$ScheduledExecutorServiceExpiry;

  public java.lang.Object scanUnsafe(reactor.core.Scannable$Attr);
    descriptor: (Lreactor/core/Scannable$Attr;)Ljava/lang/Object;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
        start local 1 // reactor.core.Scannable$Attr key
         0: .line 275
            aload 1 /* key */
            getstatic reactor.core.Scannable$Attr.NAME:Lreactor/core/Scannable$Attr;
            if_acmpne 1
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            aload 1 /* key */
            invokevirtual reactor.core.scheduler.ElasticScheduler.scanUnsafe:(Lreactor/core/Scannable$Attr;)Ljava/lang/Object;
            areturn
         1: .line 276
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            getstatic reactor.core.Scannable$Attr.PARENT:Lreactor/core/Scannable$Attr;
            if_acmpne 2
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.parent:Lreactor/core/scheduler/ElasticScheduler;
            areturn
         2: .line 277
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            getstatic reactor.core.Scannable$Attr.TERMINATED:Lreactor/core/Scannable$Attr;
            if_acmpeq 3
            aload 1 /* key */
            getstatic reactor.core.Scannable$Attr.CANCELLED:Lreactor/core/Scannable$Attr;
            if_acmpne 4
      StackMap locals:
      StackMap stack:
         3: aload 0 /* this */
            invokevirtual reactor.core.scheduler.ElasticScheduler$CachedService.isDisposed:()Z
            invokestatic java.lang.Boolean.valueOf:(Z)Ljava/lang/Boolean;
            areturn
         4: .line 278
      StackMap locals:
      StackMap stack:
            aload 1 /* key */
            getstatic reactor.core.Scannable$Attr.CAPACITY:Lreactor/core/Scannable$Attr;
            if_acmpne 8
         5: .line 280
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
            aload 1 /* key */
            invokestatic reactor.core.scheduler.Schedulers.scanExecutor:(Ljava/util/concurrent/Executor;Lreactor/core/Scannable$Attr;)Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 2 /* capacity */
        start local 2 // java.lang.Integer capacity
         6: .line 281
            aload 2 /* capacity */
            ifnull 7
            aload 2 /* capacity */
            invokevirtual java.lang.Integer.intValue:()I
            iconst_m1
            if_icmpne 8
      StackMap locals: java.lang.Integer
      StackMap stack:
         7: iconst_1
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            areturn
        end local 2 // java.lang.Integer capacity
         8: .line 283
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield reactor.core.scheduler.ElasticScheduler$CachedService.exec:Ljava/util/concurrent/ScheduledExecutorService;
            aload 1 /* key */
            invokestatic reactor.core.scheduler.Schedulers.scanExecutor:(Ljava/util/concurrent/Executor;Lreactor/core/Scannable$Attr;)Ljava/lang/Object;
            areturn
        end local 1 // reactor.core.Scannable$Attr key
        end local 0 // reactor.core.scheduler.ElasticScheduler$CachedService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Lreactor/core/scheduler/ElasticScheduler$CachedService;
            0    9     1       key  Lreactor/core/Scannable$Attr;
            6    8     2  capacity  Ljava/lang/Integer;
    MethodParameters:
      Name  Flags
      key   
}
SourceFile: "ElasticScheduler.java"
NestHost: reactor.core.scheduler.ElasticScheduler
InnerClasses:
  public Attr = reactor.core.Scannable$Attr of reactor.core.Scannable
  final CachedService = reactor.core.scheduler.ElasticScheduler$CachedService of reactor.core.scheduler.ElasticScheduler
  final ScheduledExecutorServiceExpiry = reactor.core.scheduler.ElasticScheduler$ScheduledExecutorServiceExpiry of reactor.core.scheduler.ElasticScheduler