public class org.apache.cassandra.utils.CoalescingStrategies
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.CoalescingStrategies
  super_class: java.lang.Object
{
  protected static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001c) ACC_PROTECTED, ACC_STATIC, ACC_FINAL

  private static final java.lang.String DEBUG_COALESCING_PROPERTY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cassandra.coalescing_debug"

  private static final boolean DEBUG_COALESCING;
    descriptor: Z
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.lang.String DEBUG_COALESCING_PATH_PROPERTY;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "cassandra.coalescing_debug_path"

  private static final java.lang.String DEBUG_COALESCING_PATH;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static org.apache.cassandra.utils.CoalescingStrategies$Clock CLOCK;
    descriptor: Lorg/apache/cassandra/utils/CoalescingStrategies$Clock;
    flags: (0x0008) ACC_STATIC
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  private static final org.apache.cassandra.utils.CoalescingStrategies$Parker PARKER;
    descriptor: Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=1, args_size=0
         0: .line 46
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.utils.CoalescingStrategies.logger:Lorg/slf4j/Logger;
         1: .line 52
            ldc "cassandra.coalescing_debug"
            invokestatic java.lang.Boolean.getBoolean:(Ljava/lang/String;)Z
            putstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
         2: .line 55
            ldc "cassandra.coalescing_debug_path"
            ldc "/tmp/coleascing_debug"
            invokestatic java.lang.System.getProperty:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
            putstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING_PATH:Ljava/lang/String;
         3: .line 59
            getstatic org.apache.cassandra.utils.CoalescingStrategies.DEBUG_COALESCING:Z
            ifeq 9
         4: .line 61
            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
            astore 0 /* directory */
        start local 0 // java.io.File directory
         5: .line 63
            aload 0 /* directory */
            invokevirtual java.io.File.exists:()Z
            ifeq 7
         6: .line 64
            aload 0 /* directory */
            invokestatic org.apache.cassandra.io.util.FileUtils.deleteRecursive:(Ljava/io/File;)V
         7: .line 66
      StackMap locals: java.io.File
      StackMap stack:
            aload 0 /* directory */
            invokevirtual java.io.File.mkdirs:()Z
            ifne 9
         8: .line 67
            new java.lang.ExceptionInInitializerError
            dup
            ldc "Couldn't create log dir"
            invokespecial java.lang.ExceptionInInitializerError.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // java.io.File directory
         9: .line 78
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.utils.CoalescingStrategies$1
            dup
            invokespecial org.apache.cassandra.utils.CoalescingStrategies$1.<init>:()V
            putstatic org.apache.cassandra.utils.CoalescingStrategies.CLOCK:Lorg/apache/cassandra/utils/CoalescingStrategies$Clock;
        10: .line 244
            new org.apache.cassandra.utils.CoalescingStrategies$2
            dup
            invokespecial org.apache.cassandra.utils.CoalescingStrategies$2.<init>:()V
            putstatic org.apache.cassandra.utils.CoalescingStrategies.PARKER:Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
        11: .line 251
            return
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            5    9     0  directory  Ljava/io/File;

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.CoalescingStrategies this
         0: .line 44
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.utils.CoalescingStrategies this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/CoalescingStrategies;

  static void parkLoop(long);
    descriptor: (J)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=6, locals=8, args_size=1
        start local 0 // long nanos
         0: .line 94
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* now */
        start local 2 // long now
         1: .line 95
            lload 2 /* now */
            lload 0 /* nanos */
            ladd
            lstore 4 /* timer */
        start local 4 // long timer
         2: .line 98
            lload 4 /* timer */
            lload 0 /* nanos */
            ldc 16
            ldiv
            lsub
            lstore 6 /* limit */
        start local 6 // long limit
         3: .line 101
      StackMap locals: long long long
      StackMap stack:
            lload 4 /* timer */
            lload 2 /* now */
            lsub
            invokestatic java.util.concurrent.locks.LockSupport.parkNanos:(J)V
         4: .line 102
            invokestatic java.lang.System.nanoTime:()J
            lstore 2 /* now */
         5: .line 104
            lload 2 /* now */
            lload 6 /* limit */
         6: .line 99
            lcmp
            iflt 3
         7: .line 105
            return
        end local 6 // long limit
        end local 4 // long timer
        end local 2 // long now
        end local 0 // long nanos
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    8     0  nanos  J
            1    8     2    now  J
            2    8     4  timer  J
            3    8     6  limit  J
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      nanos  

  private static boolean maybeSleep(int, long, long, org.apache.cassandra.utils.CoalescingStrategies$Parker);
    descriptor: (IJJLorg/apache/cassandra/utils/CoalescingStrategies$Parker;)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=4
        start local 0 // int messages
        start local 1 // long averageGap
        start local 3 // long maxCoalesceWindow
        start local 5 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
         0: .line 110
            iload 0 /* messages */
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getOtcCoalescingEnoughCoalescedMessages:()I
            if_icmplt 2
         1: .line 111
            iconst_0
            ireturn
         2: .line 114
      StackMap locals:
      StackMap stack:
            iload 0 /* messages */
            i2l
            lload 1 /* averageGap */
            lmul
            lstore 6 /* sleep */
        start local 6 // long sleep
         3: .line 115
            lload 6 /* sleep */
            lconst_0
            lcmp
            ifle 4
            lload 6 /* sleep */
            lload 3 /* maxCoalesceWindow */
            lcmp
            ifle 6
         4: .line 116
      StackMap locals: long
      StackMap stack:
            iconst_0
            ireturn
         5: .line 122
      StackMap locals:
      StackMap stack:
            lload 6 /* sleep */
            ldc 2
            lmul
            lstore 6 /* sleep */
         6: .line 121
      StackMap locals:
      StackMap stack:
            lload 6 /* sleep */
            ldc 2
            lmul
            lload 3 /* maxCoalesceWindow */
            lcmp
            iflt 5
         7: .line 123
            aload 5 /* parker */
            lload 6 /* sleep */
            invokeinterface org.apache.cassandra.utils.CoalescingStrategies$Parker.park:(J)V
         8: .line 124
            iconst_1
            ireturn
        end local 6 // long sleep
        end local 5 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
        end local 3 // long maxCoalesceWindow
        end local 1 // long averageGap
        end local 0 // int messages
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    9     0           messages  I
            0    9     1         averageGap  J
            0    9     3  maxCoalesceWindow  J
            0    9     5             parker  Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
            3    9     6              sleep  J
    MethodParameters:
                   Name  Flags
      messages           
      averageGap         
      maxCoalesceWindow  
      parker             

  static org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy newCoalescingStrategy(java.lang.String, int, org.apache.cassandra.utils.CoalescingStrategies$Parker, org.slf4j.Logger, java.lang.String);
    descriptor: (Ljava/lang/String;ILorg/apache/cassandra/utils/CoalescingStrategies$Parker;Lorg/slf4j/Logger;Ljava/lang/String;)Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=5, locals=10, args_size=5
        start local 0 // java.lang.String strategy
        start local 1 // int coalesceWindow
        start local 2 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
        start local 3 // org.slf4j.Logger logger
        start local 4 // java.lang.String displayName
         0: .line 529
            aconst_null
            astore 5 /* classname */
        start local 5 // java.lang.String classname
         1: .line 530
            aload 0 /* strategy */
            invokevirtual java.lang.String.trim:()Ljava/lang/String;
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
            invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
            astore 6 /* strategyCleaned */
        start local 6 // java.lang.String strategyCleaned
         2: .line 531
            aload 6 /* strategyCleaned */
            dup
            astore 7
            invokevirtual java.lang.String.hashCode:()I
            lookupswitch { // 4
          -2005403122: 3
           -864683537: 4
             66907988: 5
           1053567612: 6
              default: 15
          }
      StackMap locals: java.lang.String java.lang.String java.lang.String
      StackMap stack:
         3: aload 7
            ldc "TIMEHORIZON"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 11
            goto 15
      StackMap locals:
      StackMap stack:
         4: aload 7
            ldc "MOVINGAVERAGE"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 7
            goto 15
      StackMap locals:
      StackMap stack:
         5: aload 7
            ldc "FIXED"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
            goto 15
      StackMap locals:
      StackMap stack:
         6: aload 7
            ldc "DISABLED"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 13
            goto 15
         7: .line 534
      StackMap locals:
      StackMap stack:
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$MovingAverageCoalescingStrategy;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 5 /* classname */
         8: .line 535
            goto 16
         9: .line 537
      StackMap locals:
      StackMap stack:
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$FixedCoalescingStrategy;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 5 /* classname */
        10: .line 538
            goto 16
        11: .line 540
      StackMap locals:
      StackMap stack:
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$TimeHorizonMovingAverageCoalescingStrategy;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 5 /* classname */
        12: .line 541
            goto 16
        13: .line 543
      StackMap locals:
      StackMap stack:
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$DisabledCoalescingStrategy;
            invokevirtual java.lang.Class.getName:()Ljava/lang/String;
            astore 5 /* classname */
        14: .line 544
            goto 16
        15: .line 546
      StackMap locals:
      StackMap stack:
            aload 0 /* strategy */
            astore 5 /* classname */
        16: .line 551
      StackMap locals:
      StackMap stack:
            aload 5 /* classname */
            invokestatic java.lang.Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
            astore 8 /* clazz */
        start local 8 // java.lang.Class clazz
        17: .line 553
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            aload 8 /* clazz */
            invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
            ifne 19
        18: .line 555
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            aload 5 /* classname */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " is not an instance of CoalescingStrategy"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        19: .line 558
      StackMap locals: java.lang.String int org.apache.cassandra.utils.CoalescingStrategies$Parker org.slf4j.Logger java.lang.String java.lang.String java.lang.String top java.lang.Class
      StackMap stack:
            aload 8 /* clazz */
            iconst_4
            anewarray java.lang.Class
            dup
            iconst_0
            getstatic java.lang.Integer.TYPE:Ljava/lang/Class;
            aastore
            dup
            iconst_1
            ldc Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
            aastore
            dup
            iconst_2
            ldc Lorg/slf4j/Logger;
            aastore
            dup
            iconst_3
            ldc Ljava/lang/String;
            aastore
            invokevirtual java.lang.Class.getConstructor:([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
            astore 9 /* constructor */
        start local 9 // java.lang.reflect.Constructor constructor
        20: .line 560
            aload 9 /* constructor */
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            iload 1 /* coalesceWindow */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 2 /* parker */
            aastore
            dup
            iconst_2
            aload 3 /* logger */
            aastore
            dup
            iconst_3
            aload 4 /* displayName */
            aastore
            invokevirtual java.lang.reflect.Constructor.newInstance:([Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy
        21: areturn
        end local 9 // java.lang.reflect.Constructor constructor
        end local 8 // java.lang.Class clazz
        22: .line 562
      StackMap locals: java.lang.String int org.apache.cassandra.utils.CoalescingStrategies$Parker org.slf4j.Logger java.lang.String java.lang.String java.lang.String
      StackMap stack: java.lang.Exception
            astore 8 /* e */
        start local 8 // java.lang.Exception e
        23: .line 564
            new java.lang.RuntimeException
            dup
            aload 8 /* e */
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 8 // java.lang.Exception e
        end local 6 // java.lang.String strategyCleaned
        end local 5 // java.lang.String classname
        end local 4 // java.lang.String displayName
        end local 3 // org.slf4j.Logger logger
        end local 2 // org.apache.cassandra.utils.CoalescingStrategies$Parker parker
        end local 1 // int coalesceWindow
        end local 0 // java.lang.String strategy
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   24     0         strategy  Ljava/lang/String;
            0   24     1   coalesceWindow  I
            0   24     2           parker  Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
            0   24     3           logger  Lorg/slf4j/Logger;
            0   24     4      displayName  Ljava/lang/String;
            1   24     5        classname  Ljava/lang/String;
            2   24     6  strategyCleaned  Ljava/lang/String;
           17   22     8            clazz  Ljava/lang/Class<*>;
           20   22     9      constructor  Ljava/lang/reflect/Constructor<*>;
           23   24     8                e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          16    21      22  Class java.lang.Exception
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
                Name  Flags
      strategy        
      coalesceWindow  
      parker          
      logger          
      displayName     

  public static org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy newCoalescingStrategy(java.lang.String, int, org.slf4j.Logger, java.lang.String);
    descriptor: (Ljava/lang/String;ILorg/slf4j/Logger;Ljava/lang/String;)Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // java.lang.String strategy
        start local 1 // int coalesceWindow
        start local 2 // org.slf4j.Logger logger
        start local 3 // java.lang.String displayName
         0: .line 570
            aload 0 /* strategy */
            iload 1 /* coalesceWindow */
            getstatic org.apache.cassandra.utils.CoalescingStrategies.PARKER:Lorg/apache/cassandra/utils/CoalescingStrategies$Parker;
            aload 2 /* logger */
            aload 3 /* displayName */
            invokestatic org.apache.cassandra.utils.CoalescingStrategies.newCoalescingStrategy:(Ljava/lang/String;ILorg/apache/cassandra/utils/CoalescingStrategies$Parker;Lorg/slf4j/Logger;Ljava/lang/String;)Lorg/apache/cassandra/utils/CoalescingStrategies$CoalescingStrategy;
            areturn
        end local 3 // java.lang.String displayName
        end local 2 // org.slf4j.Logger logger
        end local 1 // int coalesceWindow
        end local 0 // java.lang.String strategy
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0        strategy  Ljava/lang/String;
            0    1     1  coalesceWindow  I
            0    1     2          logger  Lorg/slf4j/Logger;
            0    1     3     displayName  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      strategy        
      coalesceWindow  
      logger          
      displayName     
}
SourceFile: "CoalescingStrategies.java"
NestMembers:
  org.apache.cassandra.utils.CoalescingStrategies$1  org.apache.cassandra.utils.CoalescingStrategies$2  org.apache.cassandra.utils.CoalescingStrategies$Clock  org.apache.cassandra.utils.CoalescingStrategies$Coalescable  org.apache.cassandra.utils.CoalescingStrategies$CoalescingStrategy  org.apache.cassandra.utils.CoalescingStrategies$DisabledCoalescingStrategy  org.apache.cassandra.utils.CoalescingStrategies$FixedCoalescingStrategy  org.apache.cassandra.utils.CoalescingStrategies$MovingAverageCoalescingStrategy  org.apache.cassandra.utils.CoalescingStrategies$Parker  org.apache.cassandra.utils.CoalescingStrategies$TimeHorizonMovingAverageCoalescingStrategy
InnerClasses:
  org.apache.cassandra.utils.CoalescingStrategies$1
  org.apache.cassandra.utils.CoalescingStrategies$2
  abstract Clock = org.apache.cassandra.utils.CoalescingStrategies$Clock of org.apache.cassandra.utils.CoalescingStrategies
  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
  DisabledCoalescingStrategy = org.apache.cassandra.utils.CoalescingStrategies$DisabledCoalescingStrategy of org.apache.cassandra.utils.CoalescingStrategies
  FixedCoalescingStrategy = org.apache.cassandra.utils.CoalescingStrategies$FixedCoalescingStrategy of org.apache.cassandra.utils.CoalescingStrategies
  MovingAverageCoalescingStrategy = org.apache.cassandra.utils.CoalescingStrategies$MovingAverageCoalescingStrategy of org.apache.cassandra.utils.CoalescingStrategies
  abstract Parker = org.apache.cassandra.utils.CoalescingStrategies$Parker of org.apache.cassandra.utils.CoalescingStrategies
  TimeHorizonMovingAverageCoalescingStrategy = org.apache.cassandra.utils.CoalescingStrategies$TimeHorizonMovingAverageCoalescingStrategy of org.apache.cassandra.utils.CoalescingStrategies