class com.google.common.util.concurrent.MoreExecutors$Application
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.google.common.util.concurrent.MoreExecutors$Application
  super_class: java.lang.Object
{
  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
         0: .line 168
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/common/util/concurrent/MoreExecutors$Application;

  final java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/ThreadPoolExecutor;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ExecutorService;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.util.concurrent.ThreadPoolExecutor executor
        start local 2 // long terminationTimeout
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 172
            aload 1 /* executor */
            invokestatic com.google.common.util.concurrent.MoreExecutors.useDaemonThreadFactory:(Ljava/util/concurrent/ThreadPoolExecutor;)V
         1: .line 173
            aload 1 /* executor */
            invokestatic java.util.concurrent.Executors.unconfigurableExecutorService:(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ExecutorService;
            astore 5 /* service */
        start local 5 // java.util.concurrent.ExecutorService service
         2: .line 174
            aload 0 /* this */
            aload 1 /* executor */
            lload 2 /* terminationTimeout */
            aload 4 /* timeUnit */
            invokevirtual com.google.common.util.concurrent.MoreExecutors$Application.addDelayedShutdownHook:(Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V
         3: .line 175
            aload 5 /* service */
            areturn
        end local 5 // java.util.concurrent.ExecutorService service
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long terminationTimeout
        end local 1 // java.util.concurrent.ThreadPoolExecutor executor
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    4     1            executor  Ljava/util/concurrent/ThreadPoolExecutor;
            0    4     2  terminationTimeout  J
            0    4     4            timeUnit  Ljava/util/concurrent/TimeUnit;
            2    4     5             service  Ljava/util/concurrent/ExecutorService;
    MethodParameters:
                    Name  Flags
      executor            
      terminationTimeout  
      timeUnit            

  final java.util.concurrent.ExecutorService getExitingExecutorService(java.util.concurrent.ThreadPoolExecutor);
    descriptor: (Ljava/util/concurrent/ThreadPoolExecutor;)Ljava/util/concurrent/ExecutorService;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.util.concurrent.ThreadPoolExecutor executor
         0: .line 179
            aload 0 /* this */
            aload 1 /* executor */
            ldc 120
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.google.common.util.concurrent.MoreExecutors$Application.getExitingExecutorService:(Ljava/util/concurrent/ThreadPoolExecutor;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ExecutorService;
            areturn
        end local 1 // java.util.concurrent.ThreadPoolExecutor executor
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    1     1  executor  Ljava/util/concurrent/ThreadPoolExecutor;
    MethodParameters:
          Name  Flags
      executor  

  final java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/ScheduledThreadPoolExecutor;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=6, args_size=4
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.util.concurrent.ScheduledThreadPoolExecutor executor
        start local 2 // long terminationTimeout
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 184
            aload 1 /* executor */
            invokestatic com.google.common.util.concurrent.MoreExecutors.useDaemonThreadFactory:(Ljava/util/concurrent/ThreadPoolExecutor;)V
         1: .line 185
            aload 1 /* executor */
            invokestatic java.util.concurrent.Executors.unconfigurableScheduledExecutorService:(Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;
            astore 5 /* service */
        start local 5 // java.util.concurrent.ScheduledExecutorService service
         2: .line 186
            aload 0 /* this */
            aload 1 /* executor */
            lload 2 /* terminationTimeout */
            aload 4 /* timeUnit */
            invokevirtual com.google.common.util.concurrent.MoreExecutors$Application.addDelayedShutdownHook:(Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V
         3: .line 187
            aload 5 /* service */
            areturn
        end local 5 // java.util.concurrent.ScheduledExecutorService service
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long terminationTimeout
        end local 1 // java.util.concurrent.ScheduledThreadPoolExecutor executor
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    4     0                this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    4     1            executor  Ljava/util/concurrent/ScheduledThreadPoolExecutor;
            0    4     2  terminationTimeout  J
            0    4     4            timeUnit  Ljava/util/concurrent/TimeUnit;
            2    4     5             service  Ljava/util/concurrent/ScheduledExecutorService;
    MethodParameters:
                    Name  Flags
      executor            
      terminationTimeout  
      timeUnit            

  final java.util.concurrent.ScheduledExecutorService getExitingScheduledExecutorService(java.util.concurrent.ScheduledThreadPoolExecutor);
    descriptor: (Ljava/util/concurrent/ScheduledThreadPoolExecutor;)Ljava/util/concurrent/ScheduledExecutorService;
    flags: (0x0010) ACC_FINAL
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.util.concurrent.ScheduledThreadPoolExecutor executor
         0: .line 192
            aload 0 /* this */
            aload 1 /* executor */
            ldc 120
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokevirtual com.google.common.util.concurrent.MoreExecutors$Application.getExitingScheduledExecutorService:(Ljava/util/concurrent/ScheduledThreadPoolExecutor;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledExecutorService;
            areturn
        end local 1 // java.util.concurrent.ScheduledThreadPoolExecutor executor
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    1     0      this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    1     1  executor  Ljava/util/concurrent/ScheduledThreadPoolExecutor;
    MethodParameters:
          Name  Flags
      executor  

  final void addDelayedShutdownHook(java.util.concurrent.ExecutorService, long, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V
    flags: (0x0010) ACC_FINAL
    Code:
      stack=9, locals=5, args_size=4
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.util.concurrent.ExecutorService service
        start local 2 // long terminationTimeout
        start local 4 // java.util.concurrent.TimeUnit timeUnit
         0: .line 197
            aload 1 /* service */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         1: .line 198
            aload 4 /* timeUnit */
            invokestatic com.google.common.base.Preconditions.checkNotNull:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 199
            aload 0 /* this */
         3: .line 201
            new java.lang.StringBuilder
            dup
            ldc "DelayedShutdownHook-for-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* service */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         4: .line 202
            new com.google.common.util.concurrent.MoreExecutors$Application$1
            dup
            aload 0 /* this */
            aload 1 /* service */
            lload 2 /* terminationTimeout */
            aload 4 /* timeUnit */
            invokespecial com.google.common.util.concurrent.MoreExecutors$Application$1.<init>:(Lcom/google/common/util/concurrent/MoreExecutors$Application;Ljava/util/concurrent/ExecutorService;JLjava/util/concurrent/TimeUnit;)V
         5: .line 200
            invokestatic com.google.common.util.concurrent.MoreExecutors.newThread:(Ljava/lang/String;Ljava/lang/Runnable;)Ljava/lang/Thread;
         6: .line 199
            invokevirtual com.google.common.util.concurrent.MoreExecutors$Application.addShutdownHook:(Ljava/lang/Thread;)V
         7: .line 218
            return
        end local 4 // java.util.concurrent.TimeUnit timeUnit
        end local 2 // long terminationTimeout
        end local 1 // java.util.concurrent.ExecutorService service
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    8     0                this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    8     1             service  Ljava/util/concurrent/ExecutorService;
            0    8     2  terminationTimeout  J
            0    8     4            timeUnit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
                    Name  Flags
      service             final
      terminationTimeout  final
      timeUnit            final

  void addShutdownHook(java.lang.Thread);
    descriptor: (Ljava/lang/Thread;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
        start local 1 // java.lang.Thread hook
         0: .line 222
            invokestatic java.lang.Runtime.getRuntime:()Ljava/lang/Runtime;
            aload 1 /* hook */
            invokevirtual java.lang.Runtime.addShutdownHook:(Ljava/lang/Thread;)V
         1: .line 223
            return
        end local 1 // java.lang.Thread hook
        end local 0 // com.google.common.util.concurrent.MoreExecutors$Application this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/common/util/concurrent/MoreExecutors$Application;
            0    2     1  hook  Ljava/lang/Thread;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    MethodParameters:
      Name  Flags
      hook  
}
SourceFile: "MoreExecutors.java"
NestHost: com.google.common.util.concurrent.MoreExecutors
InnerClasses:
  Application = com.google.common.util.concurrent.MoreExecutors$Application of com.google.common.util.concurrent.MoreExecutors
  com.google.common.util.concurrent.MoreExecutors$Application$1
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.GwtIncompatible()
      com.google.common.annotations.VisibleForTesting()