public class org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy extends org.apache.cassandra.db.compaction.AbstractCompactionStrategy
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
  super_class: org.apache.cassandra.db.compaction.AbstractCompactionStrategy
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final java.util.Comparator<org.apache.cassandra.utils.Pair<java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader>, java.lang.Double>> bucketsByHotnessComparator;
    descriptor: Ljava/util/Comparator;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Comparator<Lorg/apache/cassandra/utils/Pair<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Ljava/lang/Double;>;>;

  protected org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions sizeTieredOptions;
    descriptor: Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategyOptions;
    flags: (0x0004) ACC_PROTECTED

  protected volatile int estimatedRemainingTasks;
    descriptor: I
    flags: (0x0044) ACC_PROTECTED, ACC_VOLATILE

  protected final java.util.Set<org.apache.cassandra.io.sstable.format.SSTableReader> sstables;
    descriptor: Ljava/util/Set;
    flags: (0x0014) ACC_PROTECTED, ACC_FINAL
    Signature: Ljava/util/Set<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=2, locals=0, args_size=0
         0: .line 40
            ldc Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.$assertionsDisabled:Z
         3: .line 42
            ldc Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.logger:Lorg/slf4j/Logger;
         4: .line 44
            new org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$1
            dup
            invokespecial org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$1.<init>:()V
            putstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.bucketsByHotnessComparator:Ljava/util/Comparator;
         5: .line 64
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.db.ColumnFamilyStore, java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Map;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 2 // java.util.Map options
         0: .line 73
            aload 0 /* this */
            aload 1 /* cfs */
            aload 2 /* options */
            invokespecial org.apache.cassandra.db.compaction.AbstractCompactionStrategy.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Map;)V
         1: .line 69
            aload 0 /* this */
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            putfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables:Ljava/util/Set;
         2: .line 74
            aload 0 /* this */
            iconst_0
            putfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.estimatedRemainingTasks:I
         3: .line 75
            aload 0 /* this */
            new org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions
            dup
            aload 2 /* options */
            invokespecial org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions.<init>:(Ljava/util/Map;)V
            putfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sizeTieredOptions:Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategyOptions;
         4: .line 76
            return
        end local 2 // java.util.Map options
        end local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0    5     1      cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0    5     2  options  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    Signature: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)V
    MethodParameters:
         Name  Flags
      cfs      
      options  

  private synchronized java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader> getNextBackgroundSSTables(int);
    descriptor: (I)Ljava/util/List;
    flags: (0x0022) ACC_PRIVATE, ACC_SYNCHRONIZED
    Code:
      stack=7, locals=11, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // int gcBefore
         0: .line 81
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMinimumCompactionThreshold:()I
            istore 2 /* minThreshold */
        start local 2 // int minThreshold
         1: .line 82
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMaximumCompactionThreshold:()I
            istore 3 /* maxThreshold */
        start local 3 // int maxThreshold
         2: .line 84
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getUncompactingSSTables:()Ljava/lang/Iterable;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables:Ljava/util/Set;
            dup
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            pop
            invokedynamic apply(Ljava/util/Set;)Lcom/google/common/base/Predicate;
              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:
                  (Ljava/lang/Object;)Z
                  java/util/Set.contains(Ljava/lang/Object;)Z (9 itf)
                  (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)Z
            invokestatic com.google.common.collect.Iterables.filter:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Ljava/lang/Iterable;
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.filterSuspectSSTables:(Ljava/lang/Iterable;)Ljava/util/List;
            astore 4 /* candidates */
        start local 4 // java.lang.Iterable candidates
         3: .line 86
            aload 4 /* candidates */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.createSSTableAndLengthPairs:(Ljava/lang/Iterable;)Ljava/util/List;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sizeTieredOptions:Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategyOptions;
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions.bucketHigh:D
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sizeTieredOptions:Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategyOptions;
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions.bucketLow:D
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sizeTieredOptions:Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategyOptions;
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions.minSSTableSize:J
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getBuckets:(Ljava/util/Collection;DDJ)Ljava/util/List;
            astore 6 /* buckets */
        start local 6 // java.util.List buckets
         4: .line 87
            getstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.logger:Lorg/slf4j/Logger;
            ldc "Compaction buckets are {}"
            aload 6 /* buckets */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         5: .line 88
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 6 /* buckets */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getEstimatedCompactionsByTasks:(Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/List;)I
            putfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.estimatedRemainingTasks:I
         6: .line 89
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getCompactionStrategyManager:()Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;
            getfield org.apache.cassandra.db.compaction.CompactionStrategyManager.compactionLogger:Lorg/apache/cassandra/db/compaction/CompactionLogger;
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.estimatedRemainingTasks:I
            invokevirtual org.apache.cassandra.db.compaction.CompactionLogger.pending:(Lorg/apache/cassandra/db/compaction/AbstractCompactionStrategy;I)V
         7: .line 90
            aload 6 /* buckets */
            iload 2 /* minThreshold */
            iload 3 /* maxThreshold */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.mostInterestingBucket:(Ljava/util/List;II)Ljava/util/List;
            astore 7 /* mostInteresting */
        start local 7 // java.util.List mostInteresting
         8: .line 91
            aload 7 /* mostInteresting */
            invokeinterface java.util.List.isEmpty:()Z
            ifne 10
         9: .line 92
            aload 7 /* mostInteresting */
            areturn
        10: .line 96
      StackMap locals: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy int int int java.lang.Iterable top java.util.List java.util.List
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 8 /* sstablesWithTombstones */
        start local 8 // java.util.List sstablesWithTombstones
        11: .line 97
            aload 4 /* candidates */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 10
            goto 15
      StackMap locals: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy int int int java.lang.Iterable top java.util.List java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        12: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            astore 9 /* sstable */
        start local 9 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        13: .line 99
            aload 0 /* this */
            aload 9 /* sstable */
            iload 1 /* gcBefore */
            invokevirtual org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.worthDroppingTombstones:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;I)Z
            ifeq 15
        14: .line 100
            aload 8 /* sstablesWithTombstones */
            aload 9 /* sstable */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        15: .line 97
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 12
        16: .line 102
            aload 8 /* sstablesWithTombstones */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 18
        17: .line 103
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
        18: .line 105
      StackMap locals: org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy int int int java.lang.Iterable top java.util.List java.util.List java.util.List
      StackMap stack:
            aload 8 /* sstablesWithTombstones */
            getstatic org.apache.cassandra.io.sstable.format.SSTableReader.sizeComparator:Ljava/util/Comparator;
            invokestatic java.util.Collections.max:(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 8 // java.util.List sstablesWithTombstones
        end local 7 // java.util.List mostInteresting
        end local 6 // java.util.List buckets
        end local 4 // java.lang.Iterable candidates
        end local 3 // int maxThreshold
        end local 2 // int minThreshold
        end local 1 // int gcBefore
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0   19     0                    this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0   19     1                gcBefore  I
            1   19     2            minThreshold  I
            2   19     3            maxThreshold  I
            3   19     4              candidates  Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            4   19     6                 buckets  Ljava/util/List<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;>;
            8   19     7         mostInteresting  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           11   19     8  sstablesWithTombstones  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           13   15     9                 sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    Signature: (I)Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
    MethodParameters:
          Name  Flags
      gcBefore  final

  public static java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader> mostInterestingBucket(java.util.List<java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader>>, int, int);
    descriptor: (Ljava/util/List;II)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // java.util.List buckets
        start local 1 // int minThreshold
        start local 2 // int maxThreshold
         0: .line 118
            new java.util.ArrayList
            dup
            aload 0 /* buckets */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* prunedBucketsAndHotness */
        start local 3 // java.util.List prunedBucketsAndHotness
         1: .line 119
            aload 0 /* buckets */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 6
      StackMap locals: java.util.List int int java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.List
            astore 4 /* bucket */
        start local 4 // java.util.List bucket
         3: .line 121
            aload 4 /* bucket */
            iload 2 /* maxThreshold */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.trimToThresholdWithHotness:(Ljava/util/List;I)Lorg/apache/cassandra/utils/Pair;
            astore 6 /* bucketAndHotness */
        start local 6 // org.apache.cassandra.utils.Pair bucketAndHotness
         4: .line 122
            aload 6 /* bucketAndHotness */
            ifnull 6
            aload 6 /* bucketAndHotness */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.util.List
            invokeinterface java.util.List.size:()I
            iload 1 /* minThreshold */
            if_icmplt 6
         5: .line 123
            aload 3 /* prunedBucketsAndHotness */
            aload 6 /* bucketAndHotness */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // org.apache.cassandra.utils.Pair bucketAndHotness
        end local 4 // java.util.List bucket
         6: .line 119
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         7: .line 125
            aload 3 /* prunedBucketsAndHotness */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 9
         8: .line 126
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         9: .line 128
      StackMap locals: java.util.List int int java.util.List
      StackMap stack:
            aload 3 /* prunedBucketsAndHotness */
            getstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.bucketsByHotnessComparator:Ljava/util/Comparator;
            invokestatic java.util.Collections.max:(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 4 /* hottest */
        start local 4 // org.apache.cassandra.utils.Pair hottest
        10: .line 129
            aload 4 /* hottest */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.util.List
            areturn
        end local 4 // org.apache.cassandra.utils.Pair hottest
        end local 3 // java.util.List prunedBucketsAndHotness
        end local 2 // int maxThreshold
        end local 1 // int minThreshold
        end local 0 // java.util.List buckets
      LocalVariableTable:
        Start  End  Slot                     Name  Signature
            0   11     0                  buckets  Ljava/util/List<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;>;
            0   11     1             minThreshold  I
            0   11     2             maxThreshold  I
            1   11     3  prunedBucketsAndHotness  Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Ljava/lang/Double;>;>;
            3    6     4                   bucket  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            4    6     6         bucketAndHotness  Lorg/apache/cassandra/utils/Pair<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Ljava/lang/Double;>;
           10   11     4                  hottest  Lorg/apache/cassandra/utils/Pair<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Ljava/lang/Double;>;
    Signature: (Ljava/util/List<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;>;II)Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
    MethodParameters:
              Name  Flags
      buckets       
      minThreshold  
      maxThreshold  

  static org.apache.cassandra.utils.Pair<java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader>, java.lang.Double> trimToThresholdWithHotness(java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader>, int);
    descriptor: (Ljava/util/List;I)Lorg/apache/cassandra/utils/Pair;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // java.util.List bucket
        start local 1 // int maxThreshold
         0: .line 140
            aload 0 /* bucket */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getHotnessMap:(Ljava/util/Collection;)Ljava/util/Map;
            astore 2 /* hotnessSnapshot */
        start local 2 // java.util.Map hotnessSnapshot
         1: .line 141
            aload 0 /* bucket */
            new org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$2
            dup
            aload 2 /* hotnessSnapshot */
            invokespecial org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$2.<init>:(Ljava/util/Map;)V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
         2: .line 150
            aload 0 /* bucket */
            iconst_0
            aload 0 /* bucket */
            invokeinterface java.util.List.size:()I
            iload 1 /* maxThreshold */
            invokestatic java.lang.Math.min:(II)I
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 3 /* prunedBucket */
        start local 3 // java.util.List prunedBucket
         3: .line 153
            dconst_0
            dstore 4 /* bucketHotness */
        start local 4 // double bucketHotness
         4: .line 154
            aload 3 /* prunedBucket */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 7
      StackMap locals: java.util.List int java.util.Map java.util.List double top java.util.Iterator
      StackMap stack:
         5: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            astore 6 /* sstr */
        start local 6 // org.apache.cassandra.io.sstable.format.SSTableReader sstr
         6: .line 155
            dload 4 /* bucketHotness */
            aload 6 /* sstr */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.hotness:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)D
            dadd
            dstore 4 /* bucketHotness */
        end local 6 // org.apache.cassandra.io.sstable.format.SSTableReader sstr
         7: .line 154
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
         8: .line 157
            aload 3 /* prunedBucket */
            dload 4 /* bucketHotness */
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            areturn
        end local 4 // double bucketHotness
        end local 3 // java.util.List prunedBucket
        end local 2 // java.util.Map hotnessSnapshot
        end local 1 // int maxThreshold
        end local 0 // java.util.List bucket
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0    9     0           bucket  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            0    9     1     maxThreshold  I
            1    9     2  hotnessSnapshot  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/format/SSTableReader;Ljava/lang/Double;>;
            3    9     3     prunedBucket  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            4    9     4    bucketHotness  D
            6    7     6             sstr  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    Signature: (Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;I)Lorg/apache/cassandra/utils/Pair<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;Ljava/lang/Double;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
              Name  Flags
      bucket        
      maxThreshold  

  private static java.util.Map<org.apache.cassandra.io.sstable.format.SSTableReader, java.lang.Double> getHotnessMap(java.util.Collection<org.apache.cassandra.io.sstable.format.SSTableReader>);
    descriptor: (Ljava/util/Collection;)Ljava/util/Map;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.util.Collection sstables
         0: .line 162
            new java.util.HashMap
            dup
            aload 0 /* sstables */
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.HashMap.<init>:(I)V
            astore 1 /* hotness */
        start local 1 // java.util.Map hotness
         1: .line 163
            aload 0 /* sstables */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.util.Collection java.util.Map top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            astore 2 /* sstable */
        start local 2 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         3: .line 164
            aload 1 /* hotness */
            aload 2 /* sstable */
            aload 2 /* sstable */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.hotness:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 2 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         4: .line 163
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 165
            aload 1 /* hotness */
            areturn
        end local 1 // java.util.Map hotness
        end local 0 // java.util.Collection sstables
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  sstables  Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            1    6     1   hotness  Ljava/util/Map<Lorg/apache/cassandra/io/sstable/format/SSTableReader;Ljava/lang/Double;>;
            3    4     2   sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    Signature: (Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;)Ljava/util/Map<Lorg/apache/cassandra/io/sstable/format/SSTableReader;Ljava/lang/Double;>;
    MethodParameters:
          Name  Flags
      sstables  

  private static double hotness(org.apache.cassandra.io.sstable.format.SSTableReader);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // org.apache.cassandra.io.sstable.format.SSTableReader sstr
         0: .line 174
            aload 0 /* sstr */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getReadMeter:()Lorg/apache/cassandra/metrics/RestorableMeter;
            ifnonnull 1
            dconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 0 /* sstr */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getReadMeter:()Lorg/apache/cassandra/metrics/RestorableMeter;
            invokevirtual org.apache.cassandra.metrics.RestorableMeter.twoHourRate:()D
            aload 0 /* sstr */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.estimatedKeys:()J
            l2d
            ddiv
      StackMap locals:
      StackMap stack: double
         2: dreturn
        end local 0 // org.apache.cassandra.io.sstable.format.SSTableReader sstr
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  sstr  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    MethodParameters:
      Name  Flags
      sstr  

  public org.apache.cassandra.db.compaction.AbstractCompactionTask getNextBackgroundTask(int);
    descriptor: (I)Lorg/apache/cassandra/db/compaction/AbstractCompactionTask;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // int gcBefore
         0: .line 180
            aconst_null
            astore 2 /* previousCandidate */
        start local 2 // java.util.List previousCandidate
         1: .line 183
      StackMap locals: java.util.List
      StackMap stack:
            aload 0 /* this */
            iload 1 /* gcBefore */
            invokevirtual org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.getNextBackgroundSSTables:(I)Ljava/util/List;
            astore 3 /* hottestBucket */
        start local 3 // java.util.List hottestBucket
         2: .line 185
            aload 3 /* hottestBucket */
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 4
         3: .line 186
            aconst_null
            areturn
         4: .line 190
      StackMap locals: java.util.List
      StackMap stack:
            aload 3 /* hottestBucket */
            aload 2 /* previousCandidate */
            invokeinterface java.util.List.equals:(Ljava/lang/Object;)Z
            ifeq 9
         5: .line 192
            getstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.logger:Lorg/slf4j/Logger;
            ldc "Could not acquire references for compacting SSTables {} which is not a problem per se,unless it happens frequently, in which case it must be reported. Will retry later."
         6: .line 194
            aload 3 /* hottestBucket */
         7: .line 192
            invokeinterface org.slf4j.Logger.warn:(Ljava/lang/String;Ljava/lang/Object;)V
         8: .line 195
            aconst_null
            areturn
         9: .line 198
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getTracker:()Lorg/apache/cassandra/db/lifecycle/Tracker;
            aload 3 /* hottestBucket */
            getstatic org.apache.cassandra.db.compaction.OperationType.COMPACTION:Lorg/apache/cassandra/db/compaction/OperationType;
            invokevirtual org.apache.cassandra.db.lifecycle.Tracker.tryModify:(Ljava/lang/Iterable;Lorg/apache/cassandra/db/compaction/OperationType;)Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            astore 4 /* transaction */
        start local 4 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        10: .line 199
            aload 4 /* transaction */
            ifnull 12
        11: .line 200
            new org.apache.cassandra.db.compaction.CompactionTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 4 /* transaction */
            iload 1 /* gcBefore */
            invokespecial org.apache.cassandra.db.compaction.CompactionTask.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;I)V
            areturn
        12: .line 201
      StackMap locals: org.apache.cassandra.db.lifecycle.LifecycleTransaction
      StackMap stack:
            aload 3 /* hottestBucket */
            astore 2 /* previousCandidate */
        end local 4 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        end local 3 // java.util.List hottestBucket
        13: .line 181
            goto 1
        end local 2 // java.util.List previousCandidate
        end local 1 // int gcBefore
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0   14     1           gcBefore  I
            1   14     2  previousCandidate  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            2   13     3      hottestBucket  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           10   13     4        transaction  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    MethodParameters:
          Name  Flags
      gcBefore  

  public synchronized java.util.Collection<org.apache.cassandra.db.compaction.AbstractCompactionTask> getMaximalTask(int, boolean);
    descriptor: (IZ)Ljava/util/Collection;
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=8, locals=5, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // int gcBefore
        start local 2 // boolean splitOutput
         0: .line 208
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables:Ljava/util/Set;
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.filterSuspectSSTables:(Ljava/lang/Iterable;)Ljava/util/List;
            astore 3 /* filteredSSTables */
        start local 3 // java.lang.Iterable filteredSSTables
         1: .line 209
            aload 3 /* filteredSSTables */
            invokestatic com.google.common.collect.Iterables.isEmpty:(Ljava/lang/Iterable;)Z
            ifeq 3
         2: .line 210
            aconst_null
            areturn
         3: .line 211
      StackMap locals: java.lang.Iterable
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getTracker:()Lorg/apache/cassandra/db/lifecycle/Tracker;
            aload 3 /* filteredSSTables */
            getstatic org.apache.cassandra.db.compaction.OperationType.COMPACTION:Lorg/apache/cassandra/db/compaction/OperationType;
            invokevirtual org.apache.cassandra.db.lifecycle.Tracker.tryModify:(Ljava/lang/Iterable;Lorg/apache/cassandra/db/compaction/OperationType;)Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            astore 4 /* txn */
        start local 4 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
         4: .line 212
            aload 4 /* txn */
            ifnonnull 6
         5: .line 213
            aconst_null
            areturn
         6: .line 214
      StackMap locals: org.apache.cassandra.db.lifecycle.LifecycleTransaction
      StackMap stack:
            iload 2 /* splitOutput */
            ifeq 8
         7: .line 215
            iconst_1
            anewarray org.apache.cassandra.db.compaction.AbstractCompactionTask
            dup
            iconst_0
            new org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$SplittingCompactionTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 4 /* txn */
            iload 1 /* gcBefore */
            invokespecial org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$SplittingCompactionTask.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;I)V
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
         8: .line 216
      StackMap locals:
      StackMap stack:
            iconst_1
            anewarray org.apache.cassandra.db.compaction.AbstractCompactionTask
            dup
            iconst_0
            new org.apache.cassandra.db.compaction.CompactionTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 4 /* txn */
            iload 1 /* gcBefore */
            invokespecial org.apache.cassandra.db.compaction.CompactionTask.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;I)V
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
        end local 4 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        end local 3 // java.lang.Iterable filteredSSTables
        end local 2 // boolean splitOutput
        end local 1 // int gcBefore
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0    9     1          gcBefore  I
            0    9     2       splitOutput  Z
            1    9     3  filteredSSTables  Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            4    9     4               txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    Signature: (IZ)Ljava/util/Collection<Lorg/apache/cassandra/db/compaction/AbstractCompactionTask;>;
    MethodParameters:
             Name  Flags
      gcBefore     final
      splitOutput  

  public org.apache.cassandra.db.compaction.AbstractCompactionTask getUserDefinedTask(java.util.Collection<org.apache.cassandra.io.sstable.format.SSTableReader>, int);
    descriptor: (Ljava/util/Collection;I)Lorg/apache/cassandra/db/compaction/AbstractCompactionTask;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // java.util.Collection sstables
        start local 2 // int gcBefore
         0: .line 222
            getstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.$assertionsDisabled:Z
            ifne 1
            aload 1 /* sstables */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 224
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getTracker:()Lorg/apache/cassandra/db/lifecycle/Tracker;
            aload 1 /* sstables */
            getstatic org.apache.cassandra.db.compaction.OperationType.COMPACTION:Lorg/apache/cassandra/db/compaction/OperationType;
            invokevirtual org.apache.cassandra.db.lifecycle.Tracker.tryModify:(Ljava/lang/Iterable;Lorg/apache/cassandra/db/compaction/OperationType;)Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            astore 3 /* transaction */
        start local 3 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
         2: .line 225
            aload 3 /* transaction */
            ifnonnull 5
         3: .line 227
            getstatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.logger:Lorg/slf4j/Logger;
            ldc "Unable to mark {} for compaction; probably a background compaction got to it first.  You can disable background compactions temporarily if this is a problem"
            aload 1 /* sstables */
            invokeinterface org.slf4j.Logger.trace:(Ljava/lang/String;Ljava/lang/Object;)V
         4: .line 228
            aconst_null
            areturn
         5: .line 231
      StackMap locals: org.apache.cassandra.db.lifecycle.LifecycleTransaction
      StackMap stack:
            new org.apache.cassandra.db.compaction.CompactionTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 3 /* transaction */
            iload 2 /* gcBefore */
            invokespecial org.apache.cassandra.db.compaction.CompactionTask.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;I)V
            iconst_1
            invokevirtual org.apache.cassandra.db.compaction.CompactionTask.setUserDefined:(Z)Lorg/apache/cassandra/db/compaction/AbstractCompactionTask;
            areturn
        end local 3 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        end local 2 // int gcBefore
        end local 1 // java.util.Collection sstables
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0         this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0    6     1     sstables  Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            0    6     2     gcBefore  I
            2    6     3  transaction  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    Signature: (Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;I)Lorg/apache/cassandra/db/compaction/AbstractCompactionTask;
    MethodParameters:
          Name  Flags
      sstables  
      gcBefore  final

  public int getEstimatedRemainingTasks();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
         0: .line 236
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.estimatedRemainingTasks:I
            ireturn
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;

  public static java.util.List<org.apache.cassandra.utils.Pair<org.apache.cassandra.io.sstable.format.SSTableReader, java.lang.Long>> createSSTableAndLengthPairs(java.lang.Iterable<org.apache.cassandra.io.sstable.format.SSTableReader>);
    descriptor: (Ljava/lang/Iterable;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // java.lang.Iterable sstables
         0: .line 241
            new java.util.ArrayList
            dup
            aload 0 /* sstables */
            invokestatic com.google.common.collect.Iterables.size:(Ljava/lang/Iterable;)I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* sstableLengthPairs */
        start local 1 // java.util.List sstableLengthPairs
         1: .line 242
            aload 0 /* sstables */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: java.lang.Iterable java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            astore 2 /* sstable */
        start local 2 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         3: .line 243
            aload 1 /* sstableLengthPairs */
            aload 2 /* sstable */
            aload 2 /* sstable */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.onDiskLength:()J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         4: .line 242
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 244
            aload 1 /* sstableLengthPairs */
            areturn
        end local 1 // java.util.List sstableLengthPairs
        end local 0 // java.lang.Iterable sstables
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    6     0            sstables  Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            1    6     1  sstableLengthPairs  Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Lorg/apache/cassandra/io/sstable/format/SSTableReader;Ljava/lang/Long;>;>;
            3    4     2             sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    Signature: (Ljava/lang/Iterable<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;)Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Lorg/apache/cassandra/io/sstable/format/SSTableReader;Ljava/lang/Long;>;>;
    MethodParameters:
          Name  Flags
      sstables  

  public static <T> java.util.List<java.util.List<T>> getBuckets(java.util.Collection<org.apache.cassandra.utils.Pair<T, java.lang.Long>>, double, double, long);
    descriptor: (Ljava/util/Collection;DDJ)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=22, args_size=4
        start local 0 // java.util.Collection files
        start local 1 // double bucketHigh
        start local 3 // double bucketLow
        start local 5 // long minSSTableSize
         0: .line 253
            new java.util.ArrayList
            dup
            aload 0 /* files */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 7 /* sortedFiles */
        start local 7 // java.util.List sortedFiles
         1: .line 254
            aload 7 /* sortedFiles */
            new org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$3
            dup
            invokespecial org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$3.<init>:()V
            invokestatic java.util.Collections.sort:(Ljava/util/List;Ljava/util/Comparator;)V
         2: .line 262
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 8 /* buckets */
        start local 8 // java.util.Map buckets
         3: .line 265
            aload 7 /* sortedFiles */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 22
      StackMap locals: java.util.Collection double double long java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
         4: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 9 /* pair */
        start local 9 // org.apache.cassandra.utils.Pair pair
         5: .line 267
            aload 9 /* pair */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lstore 11 /* size */
        start local 11 // long size
         6: .line 272
            aload 8 /* buckets */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 14
            goto 18
      StackMap locals: java.util.Collection double double long java.util.List java.util.Map org.apache.cassandra.utils.Pair java.util.Iterator long top java.util.Iterator
      StackMap stack:
         7: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 13 /* entry */
        start local 13 // java.util.Map$Entry entry
         8: .line 274
            aload 13 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.List
            astore 15 /* bucket */
        start local 15 // java.util.List bucket
         9: .line 275
            aload 13 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast java.lang.Long
            invokevirtual java.lang.Long.longValue:()J
            lstore 16 /* oldAverageSize */
        start local 16 // long oldAverageSize
        10: .line 276
            lload 11 /* size */
            l2d
            lload 16 /* oldAverageSize */
            l2d
            dload 3 /* bucketLow */
            dmul
            dcmpl
            ifle 11
            lload 11 /* size */
            l2d
            lload 16 /* oldAverageSize */
            l2d
            dload 1 /* bucketHigh */
            dmul
            dcmpg
            iflt 12
        11: .line 277
      StackMap locals: java.util.Collection double double long java.util.List java.util.Map org.apache.cassandra.utils.Pair java.util.Iterator long java.util.Map$Entry java.util.Iterator java.util.List long
      StackMap stack:
            lload 11 /* size */
            lload 5 /* minSSTableSize */
            lcmp
            ifge 18
            lload 16 /* oldAverageSize */
            lload 5 /* minSSTableSize */
            lcmp
            ifge 18
        12: .line 280
      StackMap locals:
      StackMap stack:
            aload 8 /* buckets */
            lload 16 /* oldAverageSize */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 281
            aload 15 /* bucket */
            invokeinterface java.util.List.size:()I
            i2l
            lload 16 /* oldAverageSize */
            lmul
            lstore 18 /* totalSize */
        start local 18 // long totalSize
        14: .line 282
            lload 18 /* totalSize */
            lload 11 /* size */
            ladd
            aload 15 /* bucket */
            invokeinterface java.util.List.size:()I
            iconst_1
            iadd
            i2l
            ldiv
            lstore 20 /* newAverageSize */
        start local 20 // long newAverageSize
        15: .line 283
            aload 15 /* bucket */
            aload 9 /* pair */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 284
            aload 8 /* buckets */
            lload 20 /* newAverageSize */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 15 /* bucket */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        17: .line 285
            goto 22
        end local 20 // long newAverageSize
        end local 18 // long totalSize
        end local 16 // long oldAverageSize
        end local 15 // java.util.List bucket
        end local 13 // java.util.Map$Entry entry
        18: .line 272
      StackMap locals: java.util.Collection double double long java.util.List java.util.Map org.apache.cassandra.utils.Pair java.util.Iterator long top java.util.Iterator
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        19: .line 290
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 13 /* bucket */
        start local 13 // java.util.ArrayList bucket
        20: .line 291
            aload 13 /* bucket */
            aload 9 /* pair */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        21: .line 292
            aload 8 /* buckets */
            lload 11 /* size */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aload 13 /* bucket */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 13 // java.util.ArrayList bucket
        end local 11 // long size
        end local 9 // org.apache.cassandra.utils.Pair pair
        22: .line 265
      StackMap locals: java.util.Collection double double long java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
        23: .line 295
            new java.util.ArrayList
            dup
            aload 8 /* buckets */
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            areturn
        end local 8 // java.util.Map buckets
        end local 7 // java.util.List sortedFiles
        end local 5 // long minSSTableSize
        end local 3 // double bucketLow
        end local 1 // double bucketHigh
        end local 0 // java.util.Collection files
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   24     0           files  Ljava/util/Collection<Lorg/apache/cassandra/utils/Pair<TT;Ljava/lang/Long;>;>;
            0   24     1      bucketHigh  D
            0   24     3       bucketLow  D
            0   24     5  minSSTableSize  J
            1   24     7     sortedFiles  Ljava/util/List<Lorg/apache/cassandra/utils/Pair<TT;Ljava/lang/Long;>;>;
            3   24     8         buckets  Ljava/util/Map<Ljava/lang/Long;Ljava/util/List<TT;>;>;
            5   22     9            pair  Lorg/apache/cassandra/utils/Pair<TT;Ljava/lang/Long;>;
            6   22    11            size  J
            8   18    13           entry  Ljava/util/Map$Entry<Ljava/lang/Long;Ljava/util/List<TT;>;>;
            9   18    15          bucket  Ljava/util/List<TT;>;
           10   18    16  oldAverageSize  J
           14   18    18       totalSize  J
           15   18    20  newAverageSize  J
           20   22    13          bucket  Ljava/util/ArrayList<TT;>;
    Signature: <T:Ljava/lang/Object;>(Ljava/util/Collection<Lorg/apache/cassandra/utils/Pair<TT;Ljava/lang/Long;>;>;DDJ)Ljava/util/List<Ljava/util/List<TT;>;>;
    MethodParameters:
                Name  Flags
      files           
      bucketHigh      
      bucketLow       
      minSSTableSize  

  public static int getEstimatedCompactionsByTasks(org.apache.cassandra.db.ColumnFamilyStore, java.util.List<java.util.List<org.apache.cassandra.io.sstable.format.SSTableReader>>);
    descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/List;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=5, args_size=2
        start local 0 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 1 // java.util.List tasks
         0: .line 300
            iconst_0
            istore 2 /* n */
        start local 2 // int n
         1: .line 301
            aload 1 /* tasks */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: org.apache.cassandra.db.ColumnFamilyStore java.util.List int top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.List
            astore 3 /* bucket */
        start local 3 // java.util.List bucket
         3: .line 303
            aload 3 /* bucket */
            invokeinterface java.util.List.size:()I
            aload 0 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMinimumCompactionThreshold:()I
            if_icmplt 5
         4: .line 304
            iload 2 /* n */
            i2d
            aload 3 /* bucket */
            invokeinterface java.util.List.size:()I
            i2d
            aload 0 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMaximumCompactionThreshold:()I
            i2d
            ddiv
            invokestatic java.lang.Math.ceil:(D)D
            dadd
            d2i
            istore 2 /* n */
        end local 3 // java.util.List bucket
         5: .line 301
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         6: .line 306
            iload 2 /* n */
            ireturn
        end local 2 // int n
        end local 1 // java.util.List tasks
        end local 0 // org.apache.cassandra.db.ColumnFamilyStore cfs
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0     cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0    7     1   tasks  Ljava/util/List<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;>;
            1    7     2       n  I
            3    5     3  bucket  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
    Signature: (Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/List<Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;>;)I
    MethodParameters:
       Name  Flags
      cfs    
      tasks  

  public long getMaxSSTableBytes();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
         0: .line 311
            ldc 9223372036854775807
            lreturn
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;

  public static java.util.Map<java.lang.String, java.lang.String> validateOptions(java.util.Map<java.lang.String, java.lang.String>);
    descriptor: (Ljava/util/Map;)Ljava/util/Map;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.util.Map options
         0: .line 316
            aload 0 /* options */
            invokestatic org.apache.cassandra.db.compaction.AbstractCompactionStrategy.validateOptions:(Ljava/util/Map;)Ljava/util/Map;
            astore 1 /* uncheckedOptions */
        start local 1 // java.util.Map uncheckedOptions
         1: .line 317
            aload 0 /* options */
            aload 1 /* uncheckedOptions */
            invokestatic org.apache.cassandra.db.compaction.SizeTieredCompactionStrategyOptions.validateOptions:(Ljava/util/Map;Ljava/util/Map;)Ljava/util/Map;
            astore 1 /* uncheckedOptions */
         2: .line 319
            aload 1 /* uncheckedOptions */
            getstatic org.apache.cassandra.schema.CompactionParams$Option.MIN_THRESHOLD:Lorg/apache/cassandra/schema/CompactionParams$Option;
            invokevirtual org.apache.cassandra.schema.CompactionParams$Option.toString:()Ljava/lang/String;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 320
            aload 1 /* uncheckedOptions */
            getstatic org.apache.cassandra.schema.CompactionParams$Option.MAX_THRESHOLD:Lorg/apache/cassandra/schema/CompactionParams$Option;
            invokevirtual org.apache.cassandra.schema.CompactionParams$Option.toString:()Ljava/lang/String;
            invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         4: .line 322
            aload 1 /* uncheckedOptions */
            areturn
        end local 1 // java.util.Map uncheckedOptions
        end local 0 // java.util.Map options
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    5     0           options  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
            1    5     1  uncheckedOptions  Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    Exceptions:
      throws org.apache.cassandra.exceptions.ConfigurationException
    Signature: (Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;)Ljava/util/Map<Ljava/lang/String;Ljava/lang/String;>;
    MethodParameters:
         Name  Flags
      options  

  public boolean shouldDefragment();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
         0: .line 328
            iconst_1
            ireturn
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;

  public synchronized void addSSTable(org.apache.cassandra.io.sstable.format.SSTableReader);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // org.apache.cassandra.io.sstable.format.SSTableReader added
         0: .line 334
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables:Ljava/util/Set;
            aload 1 /* added */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         1: .line 335
            return
        end local 1 // org.apache.cassandra.io.sstable.format.SSTableReader added
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0    2     1  added  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    MethodParameters:
       Name  Flags
      added  

  public synchronized void removeSSTable(org.apache.cassandra.io.sstable.format.SSTableReader);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
    flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
        start local 1 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         0: .line 340
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables:Ljava/util/Set;
            aload 1 /* sstable */
            invokeinterface java.util.Set.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 341
            return
        end local 1 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
            0    2     1  sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    MethodParameters:
         Name  Flags
      sstable  

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
         0: .line 345
            ldc "SizeTieredCompactionStrategy[%s/%s]"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 346
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMinimumCompactionThreshold:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
         2: .line 347
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getMaximumCompactionThreshold:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
         3: .line 345
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lorg/apache/cassandra/db/compaction/SizeTieredCompactionStrategy;
}
SourceFile: "SizeTieredCompactionStrategy.java"
NestMembers:
  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$1  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$2  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$3  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$SplittingCompactionTask
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$1
  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$2
  org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$3
  private SplittingCompactionTask = org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy$SplittingCompactionTask of org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
  public final Option = org.apache.cassandra.schema.CompactionParams$Option of org.apache.cassandra.schema.CompactionParams