class org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean<P extends org.apache.cassandra.utils.memory.MemtablePool> implements org.apache.cassandra.concurrent.InfiniteLoopExecutor$InterruptibleRunnable
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean
  super_class: java.lang.Object
{
  final P pool;
    descriptor: Lorg/apache/cassandra/utils/memory/MemtablePool;
    flags: (0x0010) ACC_FINAL
    Signature: TP;

  final java.lang.Runnable cleaner;
    descriptor: Ljava/lang/Runnable;
    flags: (0x0010) ACC_FINAL

  final org.apache.cassandra.utils.concurrent.WaitQueue wait;
    descriptor: Lorg/apache/cassandra/utils/concurrent/WaitQueue;
    flags: (0x0010) ACC_FINAL

  private void <init>(P, java.lang.Runnable);
    descriptor: (Lorg/apache/cassandra/utils/memory/MemtablePool;Ljava/lang/Runnable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
        start local 1 // org.apache.cassandra.utils.memory.MemtablePool pool
        start local 2 // java.lang.Runnable cleaner
         0: .line 41
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 39
            aload 0 /* this */
            new org.apache.cassandra.utils.concurrent.WaitQueue
            dup
            invokespecial org.apache.cassandra.utils.concurrent.WaitQueue.<init>:()V
            putfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.wait:Lorg/apache/cassandra/utils/concurrent/WaitQueue;
         2: .line 43
            aload 0 /* this */
            aload 1 /* pool */
            putfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.pool:Lorg/apache/cassandra/utils/memory/MemtablePool;
         3: .line 44
            aload 0 /* this */
            aload 2 /* cleaner */
            putfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.cleaner:Ljava/lang/Runnable;
         4: .line 45
            return
        end local 2 // java.lang.Runnable cleaner
        end local 1 // org.apache.cassandra.utils.memory.MemtablePool pool
        end local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/cassandra/utils/memory/MemtableCleanerThread$Clean<TP;>;
            0    5     1     pool  TP;
            0    5     2  cleaner  Ljava/lang/Runnable;
    Signature: (TP;Ljava/lang/Runnable;)V
    MethodParameters:
         Name  Flags
      pool     
      cleaner  

  boolean needsCleaning();
    descriptor: ()Z
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
         0: .line 49
            aload 0 /* this */
            getfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.pool:Lorg/apache/cassandra/utils/memory/MemtablePool;
            getfield org.apache.cassandra.utils.memory.MemtablePool.onHeap:Lorg/apache/cassandra/utils/memory/MemtablePool$SubPool;
            invokevirtual org.apache.cassandra.utils.memory.MemtablePool$SubPool.needsCleaning:()Z
            ifne 1
            aload 0 /* this */
            getfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.pool:Lorg/apache/cassandra/utils/memory/MemtablePool;
            getfield org.apache.cassandra.utils.memory.MemtablePool.offHeap:Lorg/apache/cassandra/utils/memory/MemtablePool$SubPool;
            invokevirtual org.apache.cassandra.utils.memory.MemtablePool$SubPool.needsCleaning:()Z
            ifne 1
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_1
            ireturn
        end local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/utils/memory/MemtableCleanerThread$Clean<TP;>;

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
         0: .line 55
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.needsCleaning:()Z
            ifeq 3
         1: .line 57
            aload 0 /* this */
            getfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.cleaner:Ljava/lang/Runnable;
            invokeinterface java.lang.Runnable.run:()V
         2: .line 58
            goto 7
         3: .line 61
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.wait:Lorg/apache/cassandra/utils/concurrent/WaitQueue;
            invokevirtual org.apache.cassandra.utils.concurrent.WaitQueue.register:()Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
            astore 1 /* signal */
        start local 1 // org.apache.cassandra.utils.concurrent.WaitQueue$Signal signal
         4: .line 62
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean.needsCleaning:()Z
            ifne 6
         5: .line 63
            aload 1 /* signal */
            invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.await:()V
            goto 7
         6: .line 65
      StackMap locals: org.apache.cassandra.utils.concurrent.WaitQueue$Signal
      StackMap stack:
            aload 1 /* signal */
            invokeinterface org.apache.cassandra.utils.concurrent.WaitQueue$Signal.cancel:()V
        end local 1 // org.apache.cassandra.utils.concurrent.WaitQueue$Signal signal
         7: .line 67
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    8     0    this  Lorg/apache/cassandra/utils/memory/MemtableCleanerThread$Clean<TP;>;
            4    7     1  signal  Lorg/apache/cassandra/utils/concurrent/WaitQueue$Signal;
    Exceptions:
      throws java.lang.InterruptedException
}
Signature: <P:Lorg/apache/cassandra/utils/memory/MemtablePool;>Ljava/lang/Object;Lorg/apache/cassandra/concurrent/InfiniteLoopExecutor$InterruptibleRunnable;
SourceFile: "MemtableCleanerThread.java"
NestHost: org.apache.cassandra.utils.memory.MemtableCleanerThread
InnerClasses:
  public abstract InterruptibleRunnable = org.apache.cassandra.concurrent.InfiniteLoopExecutor$InterruptibleRunnable of org.apache.cassandra.concurrent.InfiniteLoopExecutor
  public abstract Signal = org.apache.cassandra.utils.concurrent.WaitQueue$Signal of org.apache.cassandra.utils.concurrent.WaitQueue
  private Clean = org.apache.cassandra.utils.memory.MemtableCleanerThread$Clean of org.apache.cassandra.utils.memory.MemtableCleanerThread
  public SubPool = org.apache.cassandra.utils.memory.MemtablePool$SubPool of org.apache.cassandra.utils.memory.MemtablePool