public class org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor extends java.util.concurrent.ThreadPoolExecutor implements org.apache.cassandra.concurrent.LocalAwareExecutorService
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
  super_class: java.util.concurrent.ThreadPoolExecutor
{
  protected static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  public static final java.util.concurrent.RejectedExecutionHandler blockingExecutionHandler;
    descriptor: Ljava/util/concurrent/RejectedExecutionHandler;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 46
            ldc Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logger:Lorg/slf4j/Logger;
         1: .line 47
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$1
            dup
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$1.<init>:()V
            putstatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.blockingExecutionHandler:Ljava/util/concurrent/RejectedExecutionHandler;
         2: .line 74
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=10, locals=3, args_size=3
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.String threadPoolName
        start local 2 // int priority
         0: .line 78
            aload 0 /* this */
            iconst_1
            ldc 2147483647
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
            new org.apache.cassandra.concurrent.NamedThreadFactory
            dup
            aload 1 /* threadPoolName */
            iload 2 /* priority */
            invokespecial org.apache.cassandra.concurrent.NamedThreadFactory.<init>:(Ljava/lang/String;I)V
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.<init>:(IJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
         1: .line 79
            return
        end local 2 // int priority
        end local 1 // java.lang.String threadPoolName
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    2     0            this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    2     1  threadPoolName  Ljava/lang/String;
            0    2     2        priority  I
    MethodParameters:
                Name  Flags
      threadPoolName  
      priority        

  public void <init>(int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
    descriptor: (IJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=6
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // int corePoolSize
        start local 2 // long keepAliveTime
        start local 4 // java.util.concurrent.TimeUnit unit
        start local 5 // java.util.concurrent.BlockingQueue queue
        start local 6 // java.util.concurrent.ThreadFactory factory
         0: .line 83
            aload 0 /* this */
            iload 1 /* corePoolSize */
            iload 1 /* corePoolSize */
            lload 2 /* keepAliveTime */
            aload 4 /* unit */
            aload 5 /* queue */
            aload 6 /* factory */
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
         1: .line 84
            return
        end local 6 // java.util.concurrent.ThreadFactory factory
        end local 5 // java.util.concurrent.BlockingQueue queue
        end local 4 // java.util.concurrent.TimeUnit unit
        end local 2 // long keepAliveTime
        end local 1 // int corePoolSize
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    2     1   corePoolSize  I
            0    2     2  keepAliveTime  J
            0    2     4           unit  Ljava/util/concurrent/TimeUnit;
            0    2     5          queue  Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
            0    2     6        factory  Ljava/util/concurrent/ThreadFactory;
    Signature: (IJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;)V
    MethodParameters:
               Name  Flags
      corePoolSize   
      keepAliveTime  
      unit           
      queue          
      factory        

  public void <init>(int, int, long, java.util.concurrent.TimeUnit, java.util.concurrent.BlockingQueue<java.lang.Runnable>, java.util.concurrent.ThreadFactory);
    descriptor: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=8, args_size=7
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // int corePoolSize
        start local 2 // int maximumPoolSize
        start local 3 // long keepAliveTime
        start local 5 // java.util.concurrent.TimeUnit unit
        start local 6 // java.util.concurrent.BlockingQueue workQueue
        start local 7 // java.util.concurrent.ThreadFactory threadFactory
         0: .line 88
            aload 0 /* this */
            iload 1 /* corePoolSize */
            iload 2 /* maximumPoolSize */
            lload 3 /* keepAliveTime */
            aload 5 /* unit */
            aload 6 /* workQueue */
            aload 7 /* threadFactory */
            invokespecial java.util.concurrent.ThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
         1: .line 89
            aload 0 /* this */
            iconst_1
            invokevirtual org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.allowCoreThreadTimeOut:(Z)V
         2: .line 96
            aload 0 /* this */
            getstatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.blockingExecutionHandler:Ljava/util/concurrent/RejectedExecutionHandler;
            invokevirtual org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.setRejectedExecutionHandler:(Ljava/util/concurrent/RejectedExecutionHandler;)V
         3: .line 97
            return
        end local 7 // java.util.concurrent.ThreadFactory threadFactory
        end local 6 // java.util.concurrent.BlockingQueue workQueue
        end local 5 // java.util.concurrent.TimeUnit unit
        end local 3 // long keepAliveTime
        end local 2 // int maximumPoolSize
        end local 1 // int corePoolSize
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    4     0             this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    4     1     corePoolSize  I
            0    4     2  maximumPoolSize  I
            0    4     3    keepAliveTime  J
            0    4     5             unit  Ljava/util/concurrent/TimeUnit;
            0    4     6        workQueue  Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;
            0    4     7    threadFactory  Ljava/util/concurrent/ThreadFactory;
    Signature: (IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue<Ljava/lang/Runnable;>;Ljava/util/concurrent/ThreadFactory;)V
    MethodParameters:
                 Name  Flags
      corePoolSize     
      maximumPoolSize  
      keepAliveTime    
      unit             
      workQueue        
      threadFactory    

  public static org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor createCachedThreadpoolWithMaxSize(java.lang.String);
    descriptor: (Ljava/lang/String;)Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=11, locals=1, args_size=1
        start local 0 // java.lang.String threadPoolName
         0: .line 108
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
            dup
            iconst_0
            ldc 2147483647
         1: .line 109
            ldc 60
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
         2: .line 110
            new java.util.concurrent.SynchronousQueue
            dup
            invokespecial java.util.concurrent.SynchronousQueue.<init>:()V
         3: .line 111
            new org.apache.cassandra.concurrent.NamedThreadFactory
            dup
            aload 0 /* threadPoolName */
            invokespecial org.apache.cassandra.concurrent.NamedThreadFactory.<init>:(Ljava/lang/String;)V
         4: .line 108
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
            areturn
        end local 0 // java.lang.String threadPoolName
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0  threadPoolName  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      threadPoolName  

  public static org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor createWithFixedPoolSize(java.lang.String, int);
    descriptor: (Ljava/lang/String;I)Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // java.lang.String threadPoolName
        start local 1 // int size
         0: .line 124
            aload 0 /* threadPoolName */
            iload 1 /* size */
            ldc 2147483647
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.createWithMaximumPoolSize:(Ljava/lang/String;IILjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            areturn
        end local 1 // int size
        end local 0 // java.lang.String threadPoolName
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  threadPoolName  Ljava/lang/String;
            0    1     1            size  I
    MethodParameters:
                Name  Flags
      threadPoolName  
      size            

  public static org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor createWithMaximumPoolSize(java.lang.String, int, int, java.util.concurrent.TimeUnit);
    descriptor: (Ljava/lang/String;IILjava/util/concurrent/TimeUnit;)Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=11, locals=4, args_size=4
        start local 0 // java.lang.String threadPoolName
        start local 1 // int size
        start local 2 // int keepAliveTime
        start local 3 // java.util.concurrent.TimeUnit unit
         0: .line 139
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
            dup
            iload 1 /* size */
            ldc 2147483647
            iload 2 /* keepAliveTime */
            i2l
            aload 3 /* unit */
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
            new org.apache.cassandra.concurrent.NamedThreadFactory
            dup
            aload 0 /* threadPoolName */
            invokespecial org.apache.cassandra.concurrent.NamedThreadFactory.<init>:(Ljava/lang/String;)V
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.<init>:(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
            areturn
        end local 3 // java.util.concurrent.TimeUnit unit
        end local 2 // int keepAliveTime
        end local 1 // int size
        end local 0 // java.lang.String threadPoolName
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0  threadPoolName  Ljava/lang/String;
            0    1     1            size  I
            0    1     2   keepAliveTime  I
            0    1     3            unit  Ljava/util/concurrent/TimeUnit;
    MethodParameters:
                Name  Flags
      threadPoolName  
      size            
      keepAliveTime   
      unit            

  protected void onInitialRejection(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable task
         0: .line 142
            return
        end local 1 // java.lang.Runnable task
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    1     1  task  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      task  

  protected void onFinalAccept(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable task
         0: .line 143
            return
        end local 1 // java.lang.Runnable task
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    1     1  task  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      task  

  protected void onFinalRejection(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=0, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable task
         0: .line 144
            return
        end local 1 // java.lang.Runnable task
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    1     1  task  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      task  

  public void execute(java.lang.Runnable, org.apache.cassandra.concurrent.ExecutorLocals);
    descriptor: (Ljava/lang/Runnable;Lorg/apache/cassandra/concurrent/ExecutorLocals;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable command
        start local 2 // org.apache.cassandra.concurrent.ExecutorLocals locals
         0: .line 148
            aload 0 /* this */
            aload 2 /* locals */
            ifnull 1
            aload 1 /* command */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifeq 2
         1: .line 149
      StackMap locals:
      StackMap stack: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
            aload 1 /* command */
            goto 3
         2: .line 150
      StackMap locals:
      StackMap stack: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            dup
            aload 1 /* command */
            aload 2 /* locals */
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.<init>:(Ljava/lang/Runnable;Lorg/apache/cassandra/concurrent/ExecutorLocals;)V
         3: .line 148
      StackMap locals: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor java.lang.Runnable org.apache.cassandra.concurrent.ExecutorLocals
      StackMap stack: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor java.lang.Runnable
            invokespecial java.util.concurrent.ThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
         4: .line 151
            return
        end local 2 // org.apache.cassandra.concurrent.ExecutorLocals locals
        end local 1 // java.lang.Runnable command
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    5     1  command  Ljava/lang/Runnable;
            0    5     2   locals  Lorg/apache/cassandra/concurrent/ExecutorLocals;
    MethodParameters:
         Name  Flags
      command  
      locals   

  public void maybeExecuteImmediately(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable command
         0: .line 155
            aload 0 /* this */
            aload 1 /* command */
            invokevirtual org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
         1: .line 156
            return
        end local 1 // java.lang.Runnable command
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    2     1  command  Ljava/lang/Runnable;
    MethodParameters:
         Name  Flags
      command  

  public void execute(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable command
         0: .line 162
            aload 0 /* this */
            invokestatic org.apache.cassandra.tracing.Tracing.isTracing:()Z
            ifeq 2
            aload 1 /* command */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifne 2
         1: .line 163
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            dup
            aload 1 /* command */
            aconst_null
            invokestatic java.util.concurrent.Executors.callable:(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.<init>:(Ljava/util/concurrent/Callable;)V
            goto 3
         2: .line 164
      StackMap locals:
      StackMap stack: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor
            aload 1 /* command */
         3: .line 162
      StackMap locals: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor java.lang.Runnable
      StackMap stack: org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor java.lang.Runnable
            invokespecial java.util.concurrent.ThreadPoolExecutor.execute:(Ljava/lang/Runnable;)V
         4: .line 165
            return
        end local 1 // java.lang.Runnable command
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    5     1  command  Ljava/lang/Runnable;
    MethodParameters:
         Name  Flags
      command  

  protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.lang.Runnable, T);
    descriptor: (Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable runnable
        start local 2 // java.lang.Object result
         0: .line 170
            invokestatic org.apache.cassandra.tracing.Tracing.isTracing:()Z
            ifeq 2
            aload 1 /* runnable */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifne 2
         1: .line 172
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            dup
            aload 1 /* runnable */
            aload 2 /* result */
            invokestatic java.util.concurrent.Executors.callable:(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.<init>:(Ljava/util/concurrent/Callable;)V
            areturn
         2: .line 174
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* runnable */
            aload 2 /* result */
            invokespecial java.util.concurrent.ThreadPoolExecutor.newTaskFor:(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
            areturn
        end local 2 // java.lang.Object result
        end local 1 // java.lang.Runnable runnable
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    3     1  runnable  Ljava/lang/Runnable;
            0    3     2    result  TT;
    Signature: <T:Ljava/lang/Object;>(Ljava/lang/Runnable;TT;)Ljava/util/concurrent/RunnableFuture<TT;>;
    MethodParameters:
          Name  Flags
      runnable  
      result    

  protected <T> java.util.concurrent.RunnableFuture<T> newTaskFor(java.util.concurrent.Callable<T>);
    descriptor: (Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.util.concurrent.Callable callable
         0: .line 180
            invokestatic org.apache.cassandra.tracing.Tracing.isTracing:()Z
            ifeq 2
            aload 1 /* callable */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifne 2
         1: .line 182
            new org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            dup
            aload 1 /* callable */
            invokespecial org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.<init>:(Ljava/util/concurrent/Callable;)V
            areturn
         2: .line 184
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* callable */
            invokespecial java.util.concurrent.ThreadPoolExecutor.newTaskFor:(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
            areturn
        end local 1 // java.util.concurrent.Callable callable
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    3     1  callable  Ljava/util/concurrent/Callable<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/concurrent/Callable<TT;>;)Ljava/util/concurrent/RunnableFuture<TT;>;
    MethodParameters:
          Name  Flags
      callable  

  protected void afterExecute(java.lang.Runnable, java.lang.Throwable);
    descriptor: (Ljava/lang/Runnable;Ljava/lang/Throwable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Runnable r
        start local 2 // java.lang.Throwable t
         0: .line 190
            aload 0 /* this */
            aload 1 /* r */
            aload 2 /* t */
            invokespecial java.util.concurrent.ThreadPoolExecutor.afterExecute:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
         1: .line 192
            aload 1 /* r */
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.maybeResetTraceSessionWrapper:(Ljava/lang/Runnable;)V
         2: .line 193
            aload 1 /* r */
            aload 2 /* t */
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logExceptionsAfterExecute:(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
         3: .line 194
            return
        end local 2 // java.lang.Throwable t
        end local 1 // java.lang.Runnable r
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    4     1     r  Ljava/lang/Runnable;
            0    4     2     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      r     
      t     

  protected static void maybeResetTraceSessionWrapper(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // java.lang.Runnable r
         0: .line 198
            aload 0 /* r */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifeq 3
         1: .line 200
            aload 0 /* r */
            checkcast org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            astore 1 /* tsw */
        start local 1 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper tsw
         2: .line 203
            aload 1 /* tsw */
            invokevirtual org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.reset:()V
        end local 1 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper tsw
         3: .line 205
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Runnable r
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     r  Ljava/lang/Runnable;
            2    3     1   tsw  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor$LocalSessionWrapper;
    MethodParameters:
      Name  Flags
      r     

  protected void beforeExecute(java.lang.Thread, java.lang.Runnable);
    descriptor: (Ljava/lang/Thread;Ljava/lang/Runnable;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
        start local 1 // java.lang.Thread t
        start local 2 // java.lang.Runnable r
         0: .line 210
            aload 2 /* r */
            instanceof org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            ifeq 2
         1: .line 211
            aload 2 /* r */
            checkcast org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
            invokevirtual org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper.setupContext:()V
         2: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* t */
            aload 2 /* r */
            invokespecial java.util.concurrent.ThreadPoolExecutor.beforeExecute:(Ljava/lang/Thread;Ljava/lang/Runnable;)V
         3: .line 214
            return
        end local 2 // java.lang.Runnable r
        end local 1 // java.lang.Thread t
        end local 0 // org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/concurrent/DebuggableThreadPoolExecutor;
            0    4     1     t  Ljava/lang/Thread;
            0    4     2     r  Ljava/lang/Runnable;
    MethodParameters:
      Name  Flags
      t     
      r     

  public static void logExceptionsAfterExecute(java.lang.Runnable, java.lang.Throwable);
    descriptor: (Ljava/lang/Runnable;Ljava/lang/Throwable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=3, args_size=2
        start local 0 // java.lang.Runnable r
        start local 1 // java.lang.Throwable t
         0: .line 222
            aload 0 /* r */
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.extractThrowable:(Ljava/lang/Runnable;)Ljava/lang/Throwable;
            astore 2 /* hiddenThrowable */
        start local 2 // java.lang.Throwable hiddenThrowable
         1: .line 223
            aload 2 /* hiddenThrowable */
            ifnull 3
         2: .line 224
            aload 2 /* hiddenThrowable */
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.handleOrLog:(Ljava/lang/Throwable;)V
         3: .line 229
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 1 /* t */
            ifnull 5
            invokestatic java.lang.Thread.getDefaultUncaughtExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler;
            ifnonnull 5
         4: .line 230
            aload 1 /* t */
            invokestatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.handleOrLog:(Ljava/lang/Throwable;)V
         5: .line 231
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable hiddenThrowable
        end local 1 // java.lang.Throwable t
        end local 0 // java.lang.Runnable r
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    6     0                r  Ljava/lang/Runnable;
            0    6     1                t  Ljava/lang/Throwable;
            1    6     2  hiddenThrowable  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      r     
      t     

  public static void handleOrLog(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.Throwable t
         0: .line 238
            invokestatic java.lang.Thread.getDefaultUncaughtExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler;
            ifnonnull 2
         1: .line 239
            getstatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logger:Lorg/slf4j/Logger;
            ldc "Error in ThreadPoolExecutor"
            aload 0 /* t */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
            goto 3
         2: .line 241
      StackMap locals:
      StackMap stack:
            invokestatic java.lang.Thread.getDefaultUncaughtExceptionHandler:()Ljava/lang/Thread$UncaughtExceptionHandler;
            invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
            aload 0 /* t */
            invokeinterface java.lang.Thread$UncaughtExceptionHandler.uncaughtException:(Ljava/lang/Thread;Ljava/lang/Throwable;)V
         3: .line 242
      StackMap locals:
      StackMap stack:
            return
        end local 0 // java.lang.Throwable t
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0     t  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      t     

  public static java.lang.Throwable extractThrowable(java.lang.Runnable);
    descriptor: (Ljava/lang/Runnable;)Ljava/lang/Throwable;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.lang.Runnable runnable
         0: .line 254
            aload 0 /* runnable */
            instanceof java.util.concurrent.Future
            ifeq 10
            aload 0 /* runnable */
            checkcast java.util.concurrent.Future
            invokeinterface java.util.concurrent.Future.isDone:()Z
            ifeq 10
         1: .line 258
            aload 0 /* runnable */
            checkcast java.util.concurrent.Future
            invokeinterface java.util.concurrent.Future.get:()Ljava/lang/Object;
            pop
         2: .line 259
            goto 10
         3: .line 260
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            astore 1 /* e */
        start local 1 // java.lang.InterruptedException e
         4: .line 262
            new java.lang.AssertionError
            dup
            aload 1 /* e */
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 1 // java.lang.InterruptedException e
         5: .line 264
      StackMap locals:
      StackMap stack: java.util.concurrent.CancellationException
            astore 1 /* e */
        start local 1 // java.util.concurrent.CancellationException e
         6: .line 266
            getstatic org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor.logger:Lorg/slf4j/Logger;
            ldc "Task cancelled"
            aload 1 /* e */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 1 // java.util.concurrent.CancellationException e
         7: goto 10
         8: .line 268
      StackMap locals:
      StackMap stack: java.util.concurrent.ExecutionException
            astore 1 /* e */
        start local 1 // java.util.concurrent.ExecutionException e
         9: .line 270
            aload 1 /* e */
            invokevirtual java.util.concurrent.ExecutionException.getCause:()Ljava/lang/Throwable;
            areturn
        end local 1 // java.util.concurrent.ExecutionException e
        10: .line 274
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.Runnable runnable
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0  runnable  Ljava/lang/Runnable;
            4    5     1         e  Ljava/lang/InterruptedException;
            6    7     1         e  Ljava/util/concurrent/CancellationException;
            9   10     1         e  Ljava/util/concurrent/ExecutionException;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.InterruptedException
           1     2       5  Class java.util.concurrent.CancellationException
           1     2       8  Class java.util.concurrent.ExecutionException
    MethodParameters:
          Name  Flags
      runnable  
}
SourceFile: "DebuggableThreadPoolExecutor.java"
NestMembers:
  org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$1  org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper
InnerClasses:
  public abstract UncaughtExceptionHandler = java.lang.Thread$UncaughtExceptionHandler of java.lang.Thread
  org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$1
  private LocalSessionWrapper = org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor$LocalSessionWrapper of org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor