public final class io.reactivex.internal.schedulers.SchedulerPoolFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
  this_class: io.reactivex.internal.schedulers.SchedulerPoolFactory
  super_class: java.lang.Object
{
  static final java.lang.String PURGE_ENABLED_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "rx2.purge-enabled"

  public static final boolean PURGE_ENABLED;
    descriptor: Z
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static final java.lang.String PURGE_PERIOD_SECONDS_KEY;
    descriptor: Ljava/lang/String;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: "rx2.purge-period-seconds"

  public static final int PURGE_PERIOD_SECONDS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static final java.util.concurrent.atomic.AtomicReference<java.util.concurrent.ScheduledExecutorService> PURGE_THREAD;
    descriptor: Ljava/util/concurrent/atomic/AtomicReference;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/concurrent/atomic/AtomicReference<Ljava/util/concurrent/ScheduledExecutorService;>;

  static final java.util.Map<java.util.concurrent.ScheduledThreadPoolExecutor, java.lang.Object> POOLS;
    descriptor: Ljava/util/Map;
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Object;>;

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=2, args_size=0
         0: .line 47
            new java.util.concurrent.atomic.AtomicReference
            dup
            invokespecial java.util.concurrent.atomic.AtomicReference.<init>:()V
         1: .line 46
            putstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_THREAD:Ljava/util/concurrent/atomic/AtomicReference;
         2: .line 52
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
         3: .line 51
            putstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.POOLS:Ljava/util/Map;
         4: .line 93
            invokestatic java.lang.System.getProperties:()Ljava/util/Properties;
            astore 0 /* properties */
        start local 0 // java.util.Properties properties
         5: .line 95
            new io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties
            dup
            invokespecial io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties.<init>:()V
            astore 1 /* pp */
        start local 1 // io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties pp
         6: .line 96
            aload 1 /* pp */
            aload 0 /* properties */
            invokevirtual io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties.load:(Ljava/util/Properties;)V
         7: .line 98
            aload 1 /* pp */
            getfield io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties.purgeEnable:Z
            putstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_ENABLED:Z
         8: .line 99
            aload 1 /* pp */
            getfield io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties.purgePeriod:I
            putstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_PERIOD_SECONDS:I
         9: .line 101
            invokestatic io.reactivex.internal.schedulers.SchedulerPoolFactory.start:()V
        end local 1 // io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties pp
        end local 0 // java.util.Properties properties
        10: .line 102
            return
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            5   10     0  properties  Ljava/util/Properties;
            6   10     1          pp  Lio/reactivex/internal/schedulers/SchedulerPoolFactory$PurgeProperties;

  private void <init>();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // io.reactivex.internal.schedulers.SchedulerPoolFactory this
         0: .line 28
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 29
            new java.lang.IllegalStateException
            dup
            ldc "No instances!"
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // io.reactivex.internal.schedulers.SchedulerPoolFactory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lio/reactivex/internal/schedulers/SchedulerPoolFactory;

  public static void start();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 58
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_ENABLED:Z
            invokestatic io.reactivex.internal.schedulers.SchedulerPoolFactory.tryStart:(Z)V
         1: .line 59
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static void tryStart(boolean);
    descriptor: (Z)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=3, args_size=1
        start local 0 // boolean purgeEnabled
         0: .line 62
            iload 0 /* purgeEnabled */
            ifeq 10
         1: .line 64
      StackMap locals:
      StackMap stack:
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_THREAD:Ljava/util/concurrent/atomic/AtomicReference;
            invokevirtual java.util.concurrent.atomic.AtomicReference.get:()Ljava/lang/Object;
            checkcast java.util.concurrent.ScheduledExecutorService
            astore 1 /* curr */
        start local 1 // java.util.concurrent.ScheduledExecutorService curr
         2: .line 65
            aload 1 /* curr */
            ifnull 4
         3: .line 66
            return
         4: .line 68
      StackMap locals: java.util.concurrent.ScheduledExecutorService
      StackMap stack:
            iconst_1
            new io.reactivex.internal.schedulers.RxThreadFactory
            dup
            ldc "RxSchedulerPurge"
            invokespecial io.reactivex.internal.schedulers.RxThreadFactory.<init>:(Ljava/lang/String;)V
            invokestatic java.util.concurrent.Executors.newScheduledThreadPool:(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
            astore 2 /* next */
        start local 2 // java.util.concurrent.ScheduledExecutorService next
         5: .line 69
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_THREAD:Ljava/util/concurrent/atomic/AtomicReference;
            aload 1 /* curr */
            aload 2 /* next */
            invokevirtual java.util.concurrent.atomic.AtomicReference.compareAndSet:(Ljava/lang/Object;Ljava/lang/Object;)Z
            ifeq 8
         6: .line 71
            aload 2 /* next */
            new io.reactivex.internal.schedulers.SchedulerPoolFactory$ScheduledTask
            dup
            invokespecial io.reactivex.internal.schedulers.SchedulerPoolFactory$ScheduledTask.<init>:()V
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_PERIOD_SECONDS:I
            i2l
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_PERIOD_SECONDS:I
            i2l
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokeinterface java.util.concurrent.ScheduledExecutorService.scheduleAtFixedRate:(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
            pop
         7: .line 73
            return
         8: .line 75
      StackMap locals: java.util.concurrent.ScheduledExecutorService
      StackMap stack:
            aload 2 /* next */
            invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
            pop
        end local 2 // java.util.concurrent.ScheduledExecutorService next
        end local 1 // java.util.concurrent.ScheduledExecutorService curr
         9: .line 63
            goto 1
        10: .line 79
      StackMap locals:
      StackMap stack:
            return
        end local 0 // boolean purgeEnabled
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   11     0  purgeEnabled  Z
            2    9     1          curr  Ljava/util/concurrent/ScheduledExecutorService;
            5    9     2          next  Ljava/util/concurrent/ScheduledExecutorService;
    MethodParameters:
              Name  Flags
      purgeEnabled  

  public static void shutdown();
    descriptor: ()V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=0
         0: .line 85
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_THREAD:Ljava/util/concurrent/atomic/AtomicReference;
            aconst_null
            invokevirtual java.util.concurrent.atomic.AtomicReference.getAndSet:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.concurrent.ScheduledExecutorService
            astore 0 /* exec */
        start local 0 // java.util.concurrent.ScheduledExecutorService exec
         1: .line 86
            aload 0 /* exec */
            ifnull 3
         2: .line 87
            aload 0 /* exec */
            invokeinterface java.util.concurrent.ScheduledExecutorService.shutdownNow:()Ljava/util/List;
            pop
         3: .line 89
      StackMap locals: java.util.concurrent.ScheduledExecutorService
      StackMap stack:
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.POOLS:Ljava/util/Map;
            invokeinterface java.util.Map.clear:()V
         4: .line 90
            return
        end local 0 // java.util.concurrent.ScheduledExecutorService exec
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            1    5     0  exec  Ljava/util/concurrent/ScheduledExecutorService;

  public static java.util.concurrent.ScheduledExecutorService create(java.util.concurrent.ThreadFactory);
    descriptor: (Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.concurrent.ThreadFactory factory
         0: .line 135
            iconst_1
            aload 0 /* factory */
            invokestatic java.util.concurrent.Executors.newScheduledThreadPool:(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
            astore 1 /* exec */
        start local 1 // java.util.concurrent.ScheduledExecutorService exec
         1: .line 136
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.PURGE_ENABLED:Z
            aload 1 /* exec */
            invokestatic io.reactivex.internal.schedulers.SchedulerPoolFactory.tryPutIntoPool:(ZLjava/util/concurrent/ScheduledExecutorService;)V
         2: .line 137
            aload 1 /* exec */
            areturn
        end local 1 // java.util.concurrent.ScheduledExecutorService exec
        end local 0 // java.util.concurrent.ThreadFactory factory
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    3     0  factory  Ljava/util/concurrent/ThreadFactory;
            1    3     1     exec  Ljava/util/concurrent/ScheduledExecutorService;
    MethodParameters:
         Name  Flags
      factory  

  static void tryPutIntoPool(boolean, java.util.concurrent.ScheduledExecutorService);
    descriptor: (ZLjava/util/concurrent/ScheduledExecutorService;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // boolean purgeEnabled
        start local 1 // java.util.concurrent.ScheduledExecutorService exec
         0: .line 141
            iload 0 /* purgeEnabled */
            ifeq 3
            aload 1 /* exec */
            instanceof java.util.concurrent.ScheduledThreadPoolExecutor
            ifeq 3
         1: .line 142
            aload 1 /* exec */
            checkcast java.util.concurrent.ScheduledThreadPoolExecutor
            astore 2 /* e */
        start local 2 // java.util.concurrent.ScheduledThreadPoolExecutor e
         2: .line 143
            getstatic io.reactivex.internal.schedulers.SchedulerPoolFactory.POOLS:Ljava/util/Map;
            aload 2 /* e */
            aload 1 /* exec */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // java.util.concurrent.ScheduledThreadPoolExecutor e
         3: .line 145
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.util.concurrent.ScheduledExecutorService exec
        end local 0 // boolean purgeEnabled
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0  purgeEnabled  Z
            0    4     1          exec  Ljava/util/concurrent/ScheduledExecutorService;
            2    3     2             e  Ljava/util/concurrent/ScheduledThreadPoolExecutor;
    MethodParameters:
              Name  Flags
      purgeEnabled  
      exec          
}
SourceFile: "SchedulerPoolFactory.java"
NestMembers:
  io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties  io.reactivex.internal.schedulers.SchedulerPoolFactory$ScheduledTask
InnerClasses:
  final PurgeProperties = io.reactivex.internal.schedulers.SchedulerPoolFactory$PurgeProperties of io.reactivex.internal.schedulers.SchedulerPoolFactory
  final ScheduledTask = io.reactivex.internal.schedulers.SchedulerPoolFactory$ScheduledTask of io.reactivex.internal.schedulers.SchedulerPoolFactory