public class org.apache.cassandra.io.sstable.Downsampling
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.io.sstable.Downsampling
  super_class: java.lang.Object
{
  public static final int BASE_SAMPLING_LEVEL;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 128

  private static final java.util.Map<java.lang.Integer, java.util.List<java.lang.Integer>> samplePatternCache;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Integer;Ljava/util/List<Ljava/lang/Integer;>;>;

  private static final java.util.Map<java.lang.Integer, java.util.List<java.lang.Integer>> originalIndexCache;
    descriptor: Ljava/util/Map;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Map<Ljava/lang/Integer;Ljava/util/List<Ljava/lang/Integer;>;>;

  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 23
            ldc Lorg/apache/cassandra/io/sstable/Downsampling;
            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.io.sstable.Downsampling.$assertionsDisabled:Z
         3: .line 36
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.apache.cassandra.io.sstable.Downsampling.samplePatternCache:Ljava/util/Map;
         4: .line 38
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            putstatic org.apache.cassandra.io.sstable.Downsampling.originalIndexCache:Ljava/util/Map;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

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

  public static java.util.List<java.lang.Integer> getSamplingPattern(int);
    descriptor: (I)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=8, args_size=1
        start local 0 // int samplingLevel
         0: .line 50
            getstatic org.apache.cassandra.io.sstable.Downsampling.samplePatternCache:Ljava/util/Map;
            iload 0 /* samplingLevel */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 1 /* pattern */
        start local 1 // java.util.List pattern
         1: .line 51
            aload 1 /* pattern */
            ifnull 3
         2: .line 52
            aload 1 /* pattern */
            areturn
         3: .line 54
      StackMap locals: java.util.List
      StackMap stack:
            iload 0 /* samplingLevel */
            iconst_1
            if_icmpgt 5
         4: .line 55
            iconst_1
            anewarray java.lang.Integer
            dup
            iconst_0
            iconst_0
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
            areturn
         5: .line 57
      StackMap locals:
      StackMap stack:
            iload 0 /* samplingLevel */
            iconst_2
            idiv
            newarray 10
            astore 2 /* odds */
        start local 2 // int[] odds
         6: .line 58
            iload 0 /* samplingLevel */
            iconst_2
            idiv
            newarray 10
            astore 3 /* evens */
        start local 3 // int[] evens
         7: .line 59
            iconst_1
            istore 4 /* i */
        start local 4 // int i
         8: goto 11
         9: .line 60
      StackMap locals: int[] int[] int
      StackMap stack:
            aload 2 /* odds */
            iload 4 /* i */
            iconst_2
            idiv
            iload 4 /* i */
            iastore
        10: .line 59
            iinc 4 /* i */ 2
      StackMap locals:
      StackMap stack:
        11: iload 4 /* i */
            iload 0 /* samplingLevel */
            if_icmplt 9
        end local 4 // int i
        12: .line 61
            iconst_0
            istore 4 /* i */
        start local 4 // int i
        13: goto 16
        14: .line 62
      StackMap locals:
      StackMap stack:
            aload 3 /* evens */
            iload 4 /* i */
            iconst_2
            idiv
            iload 4 /* i */
            iastore
        15: .line 61
            iinc 4 /* i */ 2
      StackMap locals:
      StackMap stack:
        16: iload 4 /* i */
            iload 0 /* samplingLevel */
            if_icmplt 14
        end local 4 // int i
        17: .line 66
            iload 0 /* samplingLevel */
            iconst_2
            idiv
            invokestatic org.apache.cassandra.io.sstable.Downsampling.getSamplingPattern:(I)Ljava/util/List;
            astore 4 /* ordering */
        start local 4 // java.util.List ordering
        18: .line 67
            new java.util.ArrayList
            dup
            iload 0 /* samplingLevel */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 5 /* startIndices */
        start local 5 // java.util.List startIndices
        19: .line 69
            aload 4 /* ordering */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 22
      StackMap locals: int java.util.List int[] int[] java.util.List java.util.List top java.util.Iterator
      StackMap stack:
        20: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 6 /* index */
        start local 6 // java.lang.Integer index
        21: .line 70
            aload 5 /* startIndices */
            aload 2 /* odds */
            aload 6 /* index */
            invokevirtual java.lang.Integer.intValue:()I
            iaload
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.lang.Integer index
        22: .line 69
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        23: .line 71
            aload 4 /* ordering */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 7
            goto 26
      StackMap locals:
      StackMap stack:
        24: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.lang.Integer
            astore 6 /* index */
        start local 6 // java.lang.Integer index
        25: .line 72
            aload 5 /* startIndices */
            aload 3 /* evens */
            aload 6 /* index */
            invokevirtual java.lang.Integer.intValue:()I
            iaload
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 6 // java.lang.Integer index
        26: .line 71
      StackMap locals:
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 24
        27: .line 74
            getstatic org.apache.cassandra.io.sstable.Downsampling.samplePatternCache:Ljava/util/Map;
            iload 0 /* samplingLevel */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 5 /* startIndices */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        28: .line 75
            aload 5 /* startIndices */
            areturn
        end local 5 // java.util.List startIndices
        end local 4 // java.util.List ordering
        end local 3 // int[] evens
        end local 2 // int[] odds
        end local 1 // java.util.List pattern
        end local 0 // int samplingLevel
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   29     0  samplingLevel  I
            1   29     1        pattern  Ljava/util/List<Ljava/lang/Integer;>;
            6   29     2           odds  [I
            7   29     3          evens  [I
            8   12     4              i  I
           13   17     4              i  I
           18   29     4       ordering  Ljava/util/List<Ljava/lang/Integer;>;
           19   29     5   startIndices  Ljava/util/List<Ljava/lang/Integer;>;
           21   22     6          index  Ljava/lang/Integer;
           25   26     6          index  Ljava/lang/Integer;
    Signature: (I)Ljava/util/List<Ljava/lang/Integer;>;
    MethodParameters:
               Name  Flags
      samplingLevel  

  public static java.util.List<java.lang.Integer> getOriginalIndexes(int);
    descriptor: (I)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=4, args_size=1
        start local 0 // int samplingLevel
         0: .line 91
            getstatic org.apache.cassandra.io.sstable.Downsampling.originalIndexCache:Ljava/util/Map;
            iload 0 /* samplingLevel */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.List
            astore 1 /* originalIndexes */
        start local 1 // java.util.List originalIndexes
         1: .line 92
            aload 1 /* originalIndexes */
            ifnull 3
         2: .line 93
            aload 1 /* originalIndexes */
            areturn
         3: .line 95
      StackMap locals: java.util.List
      StackMap stack:
            sipush 128
            invokestatic org.apache.cassandra.io.sstable.Downsampling.getSamplingPattern:(I)Ljava/util/List;
            iconst_0
            sipush 128
            iload 0 /* samplingLevel */
            isub
            invokeinterface java.util.List.subList:(II)Ljava/util/List;
            astore 2 /* pattern */
        start local 2 // java.util.List pattern
         4: .line 96
            new java.util.ArrayList
            dup
            iload 0 /* samplingLevel */
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* originalIndexes */
         5: .line 97
            iconst_0
            istore 3 /* j */
        start local 3 // int j
         6: goto 10
         7: .line 99
      StackMap locals: java.util.List int
      StackMap stack:
            aload 2 /* pattern */
            iload 3 /* j */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.List.contains:(Ljava/lang/Object;)Z
            ifne 9
         8: .line 100
            aload 1 /* originalIndexes */
            iload 3 /* j */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 97
      StackMap locals:
      StackMap stack:
            iinc 3 /* j */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* j */
            sipush 128
            if_icmplt 7
        end local 3 // int j
        11: .line 103
            getstatic org.apache.cassandra.io.sstable.Downsampling.originalIndexCache:Ljava/util/Map;
            iload 0 /* samplingLevel */
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aload 1 /* originalIndexes */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        12: .line 104
            aload 1 /* originalIndexes */
            areturn
        end local 2 // java.util.List pattern
        end local 1 // java.util.List originalIndexes
        end local 0 // int samplingLevel
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   13     0    samplingLevel  I
            1   13     1  originalIndexes  Ljava/util/List<Ljava/lang/Integer;>;
            4   13     2          pattern  Ljava/util/List<Ljava/lang/Integer;>;
            6   11     3                j  I
    Signature: (I)Ljava/util/List<Ljava/lang/Integer;>;
    MethodParameters:
               Name  Flags
      samplingLevel  

  public static int getEffectiveIndexIntervalAfterIndex(int, int, int);
    descriptor: (III)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // int index
        start local 1 // int samplingLevel
        start local 2 // int minIndexInterval
         0: .line 118
            getstatic org.apache.cassandra.io.sstable.Downsampling.$assertionsDisabled:Z
            ifne 1
            iload 0 /* index */
            ifge 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 119
      StackMap locals:
      StackMap stack:
            iload 0 /* index */
            iload 1 /* samplingLevel */
            irem
            istore 0 /* index */
         2: .line 120
            iload 1 /* samplingLevel */
            invokestatic org.apache.cassandra.io.sstable.Downsampling.getOriginalIndexes:(I)Ljava/util/List;
            astore 3 /* originalIndexes */
        start local 3 // java.util.List originalIndexes
         3: .line 121
            iload 0 /* index */
            aload 3 /* originalIndexes */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            if_icmpne 4
            sipush 128
            goto 5
      StackMap locals: java.util.List
      StackMap stack:
         4: aload 3 /* originalIndexes */
            iload 0 /* index */
            iconst_1
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
      StackMap locals:
      StackMap stack: int
         5: istore 4 /* nextEntryOriginalIndex */
        start local 4 // int nextEntryOriginalIndex
         6: .line 122
            iload 4 /* nextEntryOriginalIndex */
            aload 3 /* originalIndexes */
            iload 0 /* index */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            isub
            iload 2 /* minIndexInterval */
            imul
            ireturn
        end local 4 // int nextEntryOriginalIndex
        end local 3 // java.util.List originalIndexes
        end local 2 // int minIndexInterval
        end local 1 // int samplingLevel
        end local 0 // int index
      LocalVariableTable:
        Start  End  Slot                    Name  Signature
            0    7     0                   index  I
            0    7     1           samplingLevel  I
            0    7     2        minIndexInterval  I
            3    7     3         originalIndexes  Ljava/util/List<Ljava/lang/Integer;>;
            6    7     4  nextEntryOriginalIndex  I
    MethodParameters:
                  Name  Flags
      index             
      samplingLevel     
      minIndexInterval  

  public static int[] getStartPoints(int, int);
    descriptor: (II)[I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=2
        start local 0 // int currentSamplingLevel
        start local 1 // int newSamplingLevel
         0: .line 127
            sipush 128
            invokestatic org.apache.cassandra.io.sstable.Downsampling.getSamplingPattern:(I)Ljava/util/List;
            astore 2 /* allStartPoints */
        start local 2 // java.util.List allStartPoints
         1: .line 130
            sipush 128
            iload 0 /* currentSamplingLevel */
            isub
            istore 3 /* initialRound */
        start local 3 // int initialRound
         2: .line 131
            iload 0 /* currentSamplingLevel */
            iload 1 /* newSamplingLevel */
            isub
            invokestatic java.lang.Math.abs:(I)I
            istore 4 /* numRounds */
        start local 4 // int numRounds
         3: .line 132
            iload 4 /* numRounds */
            newarray 10
            astore 5 /* startPoints */
        start local 5 // int[] startPoints
         4: .line 133
            iconst_0
            istore 6 /* i */
        start local 6 // int i
         5: goto 16
         6: .line 135
      StackMap locals: int int java.util.List int int int[] int
      StackMap stack:
            aload 2 /* allStartPoints */
            iload 3 /* initialRound */
            iload 6 /* i */
            iadd
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            istore 7 /* start */
        start local 7 // int start
         7: .line 139
            iconst_0
            istore 8 /* adjustment */
        start local 8 // int adjustment
         8: .line 140
            iconst_0
            istore 9 /* j */
        start local 9 // int j
         9: goto 13
        10: .line 142
      StackMap locals: int int int
      StackMap stack:
            aload 2 /* allStartPoints */
            iload 9 /* j */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast java.lang.Integer
            invokevirtual java.lang.Integer.intValue:()I
            iload 7 /* start */
            if_icmpge 12
        11: .line 143
            iinc 8 /* adjustment */ 1
        12: .line 140
      StackMap locals:
      StackMap stack:
            iinc 9 /* j */ 1
      StackMap locals:
      StackMap stack:
        13: iload 9 /* j */
            iload 3 /* initialRound */
            if_icmplt 10
        end local 9 // int j
        14: .line 145
            aload 5 /* startPoints */
            iload 6 /* i */
            iload 7 /* start */
            iload 8 /* adjustment */
            isub
            iastore
        end local 8 // int adjustment
        end local 7 // int start
        15: .line 133
            iinc 6 /* i */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* i */
            iload 4 /* numRounds */
            if_icmplt 6
        end local 6 // int i
        17: .line 147
            aload 5 /* startPoints */
            areturn
        end local 5 // int[] startPoints
        end local 4 // int numRounds
        end local 3 // int initialRound
        end local 2 // java.util.List allStartPoints
        end local 1 // int newSamplingLevel
        end local 0 // int currentSamplingLevel
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   18     0  currentSamplingLevel  I
            0   18     1      newSamplingLevel  I
            1   18     2        allStartPoints  Ljava/util/List<Ljava/lang/Integer;>;
            2   18     3          initialRound  I
            3   18     4             numRounds  I
            4   18     5           startPoints  [I
            5   17     6                     i  I
            7   15     7                 start  I
            8   15     8            adjustment  I
            9   14     9                     j  I
    MethodParameters:
                      Name  Flags
      currentSamplingLevel  
      newSamplingLevel      
}
SourceFile: "Downsampling.java"