public abstract class org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy
  minor version: 0
  major version: 59
  flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
  this_class: org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy
  super_class: java.lang.Object
{
  protected final org.apache.cassandra.utils.CoalescingStrategies$Parker parker;
    descriptor: Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  protected volatile boolean shouldLogAverage;
    descriptor: Z
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected final java.nio.ByteBuffer logBuffer;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL

  private java.io.RandomAccessFile ras;
    descriptor: Ljava/io/RandomAccessFile;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.String displayName;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  protected void <init>(org.apache.cassandra.utils.CoalescingStrategies$Parker, org.slf4j.Logger, java.lang.String);
    descriptor: (Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;Lorg/slf4j/Logger;Ljava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
        start local 1 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
        start local 2 // org.slf4j.Logger logger
        start local 3 // java.lang.String displayName
         0: .line 136
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 131
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.shouldLogAverage:Z
         2: .line 138
            aload 0 /* this */
            aload 1 /* parker */
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.parker:Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
         3: .line 139
            aload 0 /* this */
            aload 2 /* logger */
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logger:Lorg/slf4j/Logger;
         4: .line 140
            aload 0 /* this */
            aload 3 /* displayName */
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.displayName:Ljava/lang/String;
         5: .line 141
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 10
         6: .line 143
            aload 0 /* this */
            invokedynamic run(Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  org/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy.lambda$0()V (7)
                  ()V
         7: .line 157
            new java.lang.StringBuilder
            dup
            aload 3 /* displayName */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " debug thread"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         8: .line 143
            invokestatic org.apache.cassandra.concurrent.NamedThreadFactory.createThread:(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/lang/Thread;
         9: .line 157
            invokevirtual java.lang.Thread.start:()V
        10: .line 159
      StackMap locals: org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy org.apache.cassandra.utils.CoalescingStrategies$Parker org.slf4j.Logger java.lang.String
      StackMap stack:
            aconst_null
            astore 4 /* rasTemp */
        start local 4 // java.io.RandomAccessFile rasTemp
        11: .line 160
            aconst_null
            astore 5 /* logBufferTemp */
        start local 5 // java.nio.ByteBuffer logBufferTemp
        12: .line 161
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 20
        13: .line 165
            new java.lang.StringBuilder
            dup
            ldc "coalescing_"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.displayName:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "_"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            ldc ".log"
            new java.io.File
            dup
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING_PATH:Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokestatic java.io.File.createTempFile:(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
            astore 6 /* outFile */
        start local 6 // java.io.File outFile
        14: .line 166
            new java.io.RandomAccessFile
            dup
            aload 6 /* outFile */
            ldc "rw"
            invokespecial java.io.RandomAccessFile.<init>:(Ljava/io/File;Ljava/lang/String;)V
            astore 4 /* rasTemp */
        15: .line 167
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.ras:Ljava/io/RandomAccessFile;
            invokevirtual java.io.RandomAccessFile.getChannel:()Ljava/nio/channels/FileChannel;
            getstatic java.nio.channels.FileChannel$MapMode.READ_WRITE:Ljava/nio/channels/FileChannel$MapMode;
            lconst_0
            ldc 2147483647
            invokevirtual java.nio.channels.FileChannel.map:(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
            astore 5 /* logBufferTemp */
        16: .line 168
            aload 5 /* logBufferTemp */
            lconst_0
            invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
            pop
        end local 6 // java.io.File outFile
        17: .line 169
            goto 20
        18: .line 170
      StackMap locals: org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy org.apache.cassandra.utils.CoalescingStrategies$Parker org.slf4j.Logger java.lang.String java.io.RandomAccessFile java.nio.ByteBuffer
      StackMap stack: java.lang.Exception
            astore 6 /* e */
        start local 6 // java.lang.Exception e
        19: .line 172
            aload 2 /* logger */
            ldc "Unable to create output file for debugging coalescing"
            aload 6 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        end local 6 // java.lang.Exception e
        20: .line 175
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* rasTemp */
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.ras:Ljava/io/RandomAccessFile;
        21: .line 176
            aload 0 /* this */
            aload 5 /* logBufferTemp */
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logBuffer:Ljava/nio/ByteBuffer;
        22: .line 177
            return
        end local 5 // java.nio.ByteBuffer logBufferTemp
        end local 4 // java.io.RandomAccessFile rasTemp
        end local 3 // java.lang.String displayName
        end local 2 // org.slf4j.Logger logger
        end local 1 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   23     0           this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            0   23     1         parker  Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
            0   23     2         logger  Lorg/slf4j/Logger;
            0   23     3    displayName  Ljava/lang/String;
           11   23     4        rasTemp  Ljava/io/RandomAccessFile;
           12   23     5  logBufferTemp  Ljava/nio/ByteBuffer;
           14   17     6        outFile  Ljava/io/File;
           19   20     6              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          13    17      18  Class java.lang.Exception
    MethodParameters:
             Name  Flags
      parker       
      logger       
      displayName  

  protected final void debugGap(long);
    descriptor: (J)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
        start local 1 // long averageGap
         0: .line 184
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 3
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.shouldLogAverage:Z
            ifeq 3
         1: .line 186
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.shouldLogAverage:Z
         2: .line 187
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logger:Lorg/slf4j/Logger;
            ldc "{} gap {}\u03BCs"
            aload 0 /* this */
            getstatic java.util.concurrent.TimeUnit.NANOSECONDS:Ljava/util/concurrent/TimeUnit;
            lload 1 /* averageGap */
            invokevirtual java.util.concurrent.TimeUnit.toMicros:(J)J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         3: .line 189
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long averageGap
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    4     0        this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            0    4     1  averageGap  J
    MethodParameters:
            Name  Flags
      averageGap  

  protected final void debugTimestamp(long);
    descriptor: (J)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=6, locals=3, args_size=2
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
        start local 1 // long timestamp
         0: .line 196
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 3
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logBuffer:Ljava/nio/ByteBuffer;
            ifnull 3
         1: .line 198
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logBuffer:Ljava/nio/ByteBuffer;
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logBuffer:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.getLong:(I)J
            lconst_1
            ladd
            invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
            pop
         2: .line 199
            aload 0 /* this */
            getfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.logBuffer:Ljava/nio/ByteBuffer;
            lload 1 /* timestamp */
            invokevirtual java.nio.ByteBuffer.putLong:(J)Ljava/nio/ByteBuffer;
            pop
         3: .line 201
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long timestamp
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            0    4     1  timestamp  J
    MethodParameters:
           Name  Flags
      timestamp  

  protected final <C extends org.apache.cassandra.utils.CoalescingStrategies$Coalescable> void debugTimestamps(java.util.Collection<C>);
    descriptor: (Ljava/util/Collection;)V
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
        start local 1 // java.util.Collection coalescables
         0: .line 209
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 5
         1: .line 211
            aload 1 /* coalescables */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy java.util.Collection top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.CoalescingStrategies$Coalescable
            astore 2 /* coalescable */
        start local 2 // org.apache.cassandra.utils.CoalescingStrategies$Coalescable coalescable
         3: .line 213
            aload 0 /* this */
            aload 2 /* coalescable */
            invokeinterface org.apache.cassandra.utils.CoalescingStrategies$Coalescable.timestampNanos:()J
            invokevirtual org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.debugTimestamp:(J)V
        end local 2 // org.apache.cassandra.utils.CoalescingStrategies$Coalescable coalescable
         4: .line 211
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 216
      StackMap locals: org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy java.util.Collection
      StackMap stack:
            return
        end local 1 // java.util.Collection coalescables
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    6     0          this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            0    6     1  coalescables  Ljava/util/Collection<TC;>;
            3    4     2   coalescable  TC;
    Signature: <C::Lorg/apache/cassandra/utils/CoalescingStrategies$Coalescable;>(Ljava/util/Collection<TC;>;)V
    MethodParameters:
              Name  Flags
      coalescables  

  public <C extends org.apache.cassandra.utils.CoalescingStrategies$Coalescable> void coalesce(java.util.concurrent.BlockingQueue<C>, java.util.List<C>, );
    descriptor: (Ljava/util/concurrent/BlockingQueue;Ljava/util/List;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
        start local 1 // java.util.concurrent.BlockingQueue input
        start local 2 // java.util.List out
        start local 3 // int maxItems
         0: .line 230
            aload 2 /* out */
            invokeinterface java.util.List.isEmpty:()Z
            ldc "out list should be empty"
            invokestatic com.google.common.base.Preconditions.checkArgument:(ZLjava/lang/Object;)V
         1: .line 231
            aload 0 /* this */
            aload 1 /* input */
            aload 2 /* out */
            iload 3 /* maxItems */
            invokevirtual org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.coalesceInternal:(Ljava/util/concurrent/BlockingQueue;Ljava/util/List;I)V
         2: .line 232
            return
        end local 3 // int maxItems
        end local 2 // java.util.List out
        end local 1 // java.util.concurrent.BlockingQueue input
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            0    3     1     input  Ljava/util/concurrent/BlockingQueue<TC;>;
            0    3     2       out  Ljava/util/List<TC;>;
            0    3     3  maxItems  I
    Exceptions:
      throws java.lang.InterruptedException
    Signature: <C::Lorg/apache/cassandra/utils/CoalescingStrategies$Coalescable;>(Ljava/util/concurrent/BlockingQueue<TC;>;Ljava/util/List<TC;>;I)V
    MethodParameters:
          Name  Flags
      input     
      out       
      maxItems  

  protected abstract <C extends org.apache.cassandra.utils.CoalescingStrategies$Coalescable> void coalesceInternal(java.util.concurrent.BlockingQueue<C>, java.util.List<C>, );
    descriptor: (Ljava/util/concurrent/BlockingQueue;Ljava/util/List;I)V
    flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
    Exceptions:
      throws java.lang.InterruptedException
    Signature: <C::Lorg/apache/cassandra/utils/CoalescingStrategies$Coalescable;>(Ljava/util/concurrent/BlockingQueue<TC;>;Ljava/util/List<TC;>;I)V
    MethodParameters:
          Name  Flags
      input     
      out       
      maxItems  

  private void lambda$0();
    descriptor: ()V
    flags: (0x1002) ACC_PRIVATE, ACC_SYNTHETIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
         0: .line 149
      StackMap locals:
      StackMap stack:
            ldc 5000
            invokestatic java.lang.Thread.sleep:(J)V
         1: .line 150
            goto 4
         2: .line 151
      StackMap locals:
      StackMap stack: java.lang.InterruptedException
            pop
         3: .line 153
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 155
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy.shouldLogAverage:Z
         5: .line 145
            goto 0
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.InterruptedException
}
SourceFile: "CoalescingStrategies.java"
NestHost: org.apache.cassandra.utils.CoalescingStrategies
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public MapMode = java.nio.channels.FileChannel$MapMode of java.nio.channels.FileChannel
  public abstract Coalescable = org.apache.cassandra.utils.CoalescingStrategies$Coalescable of org.apache.cassandra.utils.CoalescingStrategies
  public abstract CoalescingStrategy = org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy of org.apache.cassandra.utils.CoalescingStrategies
  abstract Parker = org.apache.cassandra.utils.CoalescingStrategies$Parker of org.apache.cassandra.utils.CoalescingStrategies