public class org.apache.cassandra.db.compaction.Scrubber implements java.io.Closeable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.db.compaction.Scrubber
  super_class: java.lang.Object
{
  private final org.apache.cassandra.db.ColumnFamilyStore cfs;
    descriptor: Lorg/apache/cassandra/db/ColumnFamilyStore;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.io.sstable.format.SSTableReader sstable;
    descriptor: Lorg/apache/cassandra/io/sstable/format/SSTableReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction;
    descriptor: Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.io.File destination;
    descriptor: Ljava/io/File;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean skipCorrupted;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean reinsertOverflowedTTLRows;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean isCommutative;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean isIndex;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final boolean checkData;
    descriptor: Z
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final long expectedBloomFilterSize;
    descriptor: J
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.io.util.RandomAccessReader dataFile;
    descriptor: Lorg/apache/cassandra/io/util/RandomAccessReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.io.util.RandomAccessReader indexFile;
    descriptor: Lorg/apache/cassandra/io/util/RandomAccessReader;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.db.compaction.Scrubber$ScrubInfo scrubInfo;
    descriptor: Lorg/apache/cassandra/db/compaction/Scrubber$ScrubInfo;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.db.RowIndexEntry$IndexSerializer rowIndexEntrySerializer;
    descriptor: Lorg/apache/cassandra/db/RowIndexEntry$IndexSerializer;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int goodRows;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int badRows;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int emptyRows;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer currentIndexKey;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer nextIndexKey;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  long currentRowPositionFromIndex;
    descriptor: J
    flags: (0x0000) 

  long nextRowPositionFromIndex;
    descriptor: J
    flags: (0x0000) 

  private org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics negativeLocalDeletionInfoMetrics;
    descriptor: Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;
    flags: (0x0002) ACC_PRIVATE

  private final org.apache.cassandra.utils.OutputHandler outputHandler;
    descriptor: Lorg/apache/cassandra/utils/OutputHandler;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final java.util.Comparator<org.apache.cassandra.db.partitions.Partition> partitionComparator;
    descriptor: Ljava/util/Comparator;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Signature: Ljava/util/Comparator<Lorg/apache/cassandra/db/partitions/Partition;>;

  private final java.util.SortedSet<org.apache.cassandra.db.partitions.Partition> outOfOrder;
    descriptor: Ljava/util/SortedSet;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/SortedSet<Lorg/apache/cassandra/db/partitions/Partition;>;

  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 42
            ldc Lorg/apache/cassandra/db/compaction/Scrubber;
            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.Scrubber.$assertionsDisabled:Z
         3: .line 74
            new org.apache.cassandra.db.compaction.Scrubber$1
            dup
            invokespecial org.apache.cassandra.db.compaction.Scrubber$1.<init>:()V
            putstatic org.apache.cassandra.db.compaction.Scrubber.partitionComparator:Ljava/util/Comparator;
         4: .line 80
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.db.ColumnFamilyStore, org.apache.cassandra.db.lifecycle.LifecycleTransaction, boolean, boolean);
    descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=5, args_size=5
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        start local 3 // boolean skipCorrupted
        start local 4 // boolean checkData
         0: .line 85
            aload 0 /* this */
            aload 1 /* cfs */
            aload 2 /* transaction */
            iload 3 /* skipCorrupted */
            iload 4 /* checkData */
            iconst_0
            invokespecial org.apache.cassandra.db.compaction.Scrubber.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;ZZZ)V
         1: .line 86
            return
        end local 4 // boolean checkData
        end local 3 // boolean skipCorrupted
        end local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        end local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    2     0           this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    2     1            cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0    2     2    transaction  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            0    2     3  skipCorrupted  Z
            0    2     4      checkData  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      cfs            
      transaction    
      skipCorrupted  
      checkData      

  public void <init>(org.apache.cassandra.db.ColumnFamilyStore, org.apache.cassandra.db.lifecycle.LifecycleTransaction, boolean, boolean, boolean);
    descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;ZZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        start local 3 // boolean skipCorrupted
        start local 4 // boolean checkData
        start local 5 // boolean reinsertOverflowedTTLRows
         0: .line 91
            aload 0 /* this */
            aload 1 /* cfs */
            aload 2 /* transaction */
            iload 3 /* skipCorrupted */
            new org.apache.cassandra.utils.OutputHandler$LogOutput
            dup
            invokespecial org.apache.cassandra.utils.OutputHandler$LogOutput.<init>:()V
            iload 4 /* checkData */
            iload 5 /* reinsertOverflowedTTLRows */
            invokespecial org.apache.cassandra.db.compaction.Scrubber.<init>:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;ZLorg/apache/cassandra/utils/OutputHandler;ZZ)V
         1: .line 92
            return
        end local 5 // boolean reinsertOverflowedTTLRows
        end local 4 // boolean checkData
        end local 3 // boolean skipCorrupted
        end local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        end local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0    2     0                       this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    2     1                        cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0    2     2                transaction  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            0    2     3              skipCorrupted  Z
            0    2     4                  checkData  Z
            0    2     5  reinsertOverflowedTTLRows  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                           Name  Flags
      cfs                        
      transaction                
      skipCorrupted              
      checkData                  
      reinsertOverflowedTTLRows  

  public void <init>(org.apache.cassandra.db.ColumnFamilyStore, org.apache.cassandra.db.lifecycle.LifecycleTransaction, boolean, org.apache.cassandra.utils.OutputHandler, boolean, boolean);
    descriptor: (Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;ZLorg/apache/cassandra/utils/OutputHandler;ZZ)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=9, args_size=7
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        start local 3 // boolean skipCorrupted
        start local 4 // org.apache.cassandra.utils.OutputHandler outputHandler
        start local 5 // boolean checkData
        start local 6 // boolean reinsertOverflowedTTLRows
         0: .line 95
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 70
            aload 0 /* this */
            new org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics.<init>:(Lorg/apache/cassandra/db/compaction/Scrubber;)V
            putfield org.apache.cassandra.db.compaction.Scrubber.negativeLocalDeletionInfoMetrics:Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;
         2: .line 81
            aload 0 /* this */
            new java.util.TreeSet
            dup
            getstatic org.apache.cassandra.db.compaction.Scrubber.partitionComparator:Ljava/util/Comparator;
            invokespecial java.util.TreeSet.<init>:(Ljava/util/Comparator;)V
            putfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
         3: .line 102
            aload 0 /* this */
            aload 1 /* cfs */
            putfield org.apache.cassandra.db.compaction.Scrubber.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
         4: .line 103
            aload 0 /* this */
            aload 2 /* transaction */
            putfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
         5: .line 104
            aload 0 /* this */
            aload 2 /* transaction */
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.onlyOne:()Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            putfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
         6: .line 105
            aload 0 /* this */
            aload 4 /* outputHandler */
            putfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
         7: .line 106
            aload 0 /* this */
            iload 3 /* skipCorrupted */
            putfield org.apache.cassandra.db.compaction.Scrubber.skipCorrupted:Z
         8: .line 107
            aload 0 /* this */
            iload 6 /* reinsertOverflowedTTLRows */
            putfield org.apache.cassandra.db.compaction.Scrubber.reinsertOverflowedTTLRows:Z
         9: .line 108
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getfield org.apache.cassandra.io.sstable.Descriptor.version:Lorg/apache/cassandra/io/sstable/format/Version;
            invokevirtual org.apache.cassandra.io.sstable.format.Version.getSSTableFormat:()Lorg/apache/cassandra/io/sstable/format/SSTableFormat;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.metadata:Lorg/apache/cassandra/config/CFMetaData;
        10: .line 109
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getfield org.apache.cassandra.io.sstable.Descriptor.version:Lorg/apache/cassandra/io/sstable/format/Version;
        11: .line 110
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.header:Lorg/apache/cassandra/db/SerializationHeader;
        12: .line 108
            invokeinterface org.apache.cassandra.io.sstable.format.SSTableFormat.getIndexSerializer:(Lorg/apache/cassandra/config/CFMetaData;Lorg/apache/cassandra/io/sstable/format/Version;Lorg/apache/cassandra/db/SerializationHeader;)Lorg/apache/cassandra/db/RowIndexEntry$IndexSerializer;
            putfield org.apache.cassandra.db.compaction.Scrubber.rowIndexEntrySerializer:Lorg/apache/cassandra/db/RowIndexEntry$IndexSerializer;
        13: .line 112
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokestatic java.util.Collections.singletonList:(Ljava/lang/Object;)Ljava/util/List;
            astore 7 /* toScrub */
        start local 7 // java.util.List toScrub
        14: .line 115
            aload 0 /* this */
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getDirectories:()Lorg/apache/cassandra/db/Directories;
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getDiskBoundaries:()Lorg/apache/cassandra/db/DiskBoundaries;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual org.apache.cassandra.db.DiskBoundaries.getCorrectDiskForSSTable:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)Lorg/apache/cassandra/db/Directories$DataDirectory;
            invokevirtual org.apache.cassandra.db.Directories.getLocationForDisk:(Lorg/apache/cassandra/db/Directories$DataDirectory;)Ljava/io/File;
            putfield org.apache.cassandra.db.compaction.Scrubber.destination:Ljava/io/File;
        15: .line 116
            aload 0 /* this */
            aload 1 /* cfs */
            getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
            invokevirtual org.apache.cassandra.config.CFMetaData.isCounter:()Z
            putfield org.apache.cassandra.db.compaction.Scrubber.isCommutative:Z
        16: .line 118
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getstatic org.apache.cassandra.io.sstable.Component.PRIMARY_INDEX:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokevirtual java.io.File.exists:()Z
            istore 8 /* hasIndexFile */
        start local 8 // boolean hasIndexFile
        17: .line 119
            aload 0 /* this */
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.isIndex:()Z
            putfield org.apache.cassandra.db.compaction.Scrubber.isIndex:Z
        18: .line 120
            iload 8 /* hasIndexFile */
            ifne 20
        19: .line 123
            aload 4 /* outputHandler */
            new java.lang.StringBuilder
            dup
            ldc "Missing component: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getstatic org.apache.cassandra.io.sstable.Component.PRIMARY_INDEX:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
        20: .line 125
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack:
            aload 0 /* this */
            iload 5 /* checkData */
            ifeq 21
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.isIndex:Z
            ifne 21
            iconst_1
            goto 22
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
        21: iconst_0
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber int
        22: putfield org.apache.cassandra.db.compaction.Scrubber.checkData:Z
        23: .line 126
            aload 0 /* this */
        24: .line 127
            aload 1 /* cfs */
            getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
            getfield org.apache.cassandra.config.CFMetaData.params:Lorg/apache/cassandra/schema/TableParams;
            getfield org.apache.cassandra.schema.TableParams.minIndexInterval:I
            i2l
        25: .line 128
            iload 8 /* hasIndexFile */
            ifeq 26
            aload 7 /* toScrub */
            invokestatic org.apache.cassandra.io.sstable.format.SSTableReader.getApproximateKeyCount:(Ljava/lang/Iterable;)J
            goto 27
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber long
        26: lconst_0
        27: .line 126
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber long long
            invokestatic java.lang.Math.max:(JJ)J
            putfield org.apache.cassandra.db.compaction.Scrubber.expectedBloomFilterSize:J
        28: .line 134
            aload 0 /* this */
            aload 2 /* transaction */
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.isOffline:()Z
            ifeq 30
        29: .line 135
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.openDataReader:()Lorg/apache/cassandra/io/util/RandomAccessReader;
            goto 31
        30: .line 136
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getstatic org.apache.cassandra.db.compaction.CompactionManager.instance:Lorg/apache/cassandra/db/compaction/CompactionManager;
            invokevirtual org.apache.cassandra.db.compaction.CompactionManager.getRateLimiter:()Lcom/google/common/util/concurrent/RateLimiter;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.openDataReader:(Lcom/google/common/util/concurrent/RateLimiter;)Lorg/apache/cassandra/io/util/RandomAccessReader;
        31: .line 134
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.io.util.RandomAccessReader
            putfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
        32: .line 138
            aload 0 /* this */
            iload 8 /* hasIndexFile */
            ifeq 34
        33: .line 139
            new java.io.File
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getstatic org.apache.cassandra.io.sstable.Component.PRIMARY_INDEX:Lorg/apache/cassandra/io/sstable/Component;
            invokevirtual org.apache.cassandra.io.sstable.Descriptor.filenameFor:(Lorg/apache/cassandra/io/sstable/Component;)Ljava/lang/String;
            invokespecial java.io.File.<init>:(Ljava/lang/String;)V
            invokestatic org.apache.cassandra.io.util.RandomAccessReader.open:(Ljava/io/File;)Lorg/apache/cassandra/io/util/RandomAccessReader;
            goto 35
        34: .line 140
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
            aconst_null
        35: .line 138
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int int java.util.List int
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.io.util.RandomAccessReader
            putfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
        36: .line 142
            aload 0 /* this */
            new org.apache.cassandra.db.compaction.Scrubber$ScrubInfo
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokespecial org.apache.cassandra.db.compaction.Scrubber$ScrubInfo.<init>:(Lorg/apache/cassandra/io/util/RandomAccessReader;Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
            putfield org.apache.cassandra.db.compaction.Scrubber.scrubInfo:Lorg/apache/cassandra/db/compaction/Scrubber$ScrubInfo;
        37: .line 144
            aload 0 /* this */
            lconst_0
            putfield org.apache.cassandra.db.compaction.Scrubber.currentRowPositionFromIndex:J
        38: .line 145
            aload 0 /* this */
            lconst_0
            putfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
        39: .line 147
            iload 6 /* reinsertOverflowedTTLRows */
            ifeq 41
        40: .line 148
            aload 4 /* outputHandler */
            ldc "Starting scrub with reinsert overflowed TTL option"
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
        41: .line 149
      StackMap locals:
      StackMap stack:
            return
        end local 8 // boolean hasIndexFile
        end local 7 // java.util.List toScrub
        end local 6 // boolean reinsertOverflowedTTLRows
        end local 5 // boolean checkData
        end local 4 // org.apache.cassandra.utils.OutputHandler outputHandler
        end local 3 // boolean skipCorrupted
        end local 2 // org.apache.cassandra.db.lifecycle.LifecycleTransaction transaction
        end local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0   42     0                       this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0   42     1                        cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0   42     2                transaction  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            0   42     3              skipCorrupted  Z
            0   42     4              outputHandler  Lorg/apache/cassandra/utils/OutputHandler;
            0   42     5                  checkData  Z
            0   42     6  reinsertOverflowedTTLRows  Z
           14   42     7                    toScrub  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           17   42     8               hasIndexFile  Z
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                           Name  Flags
      cfs                        
      transaction                
      skipCorrupted              
      outputHandler              
      checkData                  
      reinsertOverflowedTTLRows  

  private org.apache.cassandra.db.rows.UnfilteredRowIterator withValidation(org.apache.cassandra.db.rows.UnfilteredRowIterator, java.lang.String);
    descriptor: (Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;Ljava/lang/String;)Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.rows.UnfilteredRowIterator iter
        start local 2 // java.lang.String filename
         0: .line 153
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.checkData:Z
            ifeq 1
            aload 1 /* iter */
            aload 2 /* filename */
            invokestatic org.apache.cassandra.db.rows.UnfilteredRowIterators.withValidation:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;Ljava/lang/String;)Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
            goto 2
      StackMap locals:
      StackMap stack:
         1: aload 1 /* iter */
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.rows.UnfilteredRowIterator
         2: areturn
        end local 2 // java.lang.String filename
        end local 1 // org.apache.cassandra.db.rows.UnfilteredRowIterator iter
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    3     1      iter  Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
            0    3     2  filename  Ljava/lang/String;
    MethodParameters:
          Name  Flags
      iter      
      filename  

  public void scrub();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=21, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 158
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* finished */
        start local 1 // java.util.List finished
         1: .line 159
            iconst_0
            istore 2 /* completed */
        start local 2 // boolean completed
         2: .line 160
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Scrubbing %s (%s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.length:()J
            invokestatic org.apache.cassandra.utils.FBUtilities.prettyPrintMemory:(J)Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
         3: .line 161
            aconst_null
            astore 3
            aconst_null
            astore 4
         4: aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.maxDataAge:J
            invokestatic org.apache.cassandra.io.sstable.SSTableRewriter.construct:(Lorg/apache/cassandra/db/ColumnFamilyStore;Lorg/apache/cassandra/db/lifecycle/ILifecycleTransaction;ZJ)Lorg/apache/cassandra/io/sstable/SSTableRewriter;
            astore 5 /* writer */
        start local 5 // org.apache.cassandra.io.sstable.SSTableRewriter writer
         5: .line 162
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokestatic java.util.Collections.singleton:(Ljava/lang/Object;)Ljava/util/Set;
            invokestatic org.apache.cassandra.utils.concurrent.Refs.ref:(Ljava/lang/Iterable;)Lorg/apache/cassandra/utils/concurrent/Refs;
            astore 6 /* refs */
        start local 6 // org.apache.cassandra.utils.concurrent.Refs refs
         6: .line 164
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.indexAvailable:()Z
            ifeq 7
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength:(Ljava/io/DataInput;)Ljava/nio/ByteBuffer;
            goto 8
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
         7: aconst_null
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber java.nio.ByteBuffer
         8: putfield org.apache.cassandra.db.compaction.Scrubber.nextIndexKey:Ljava/nio/ByteBuffer;
         9: .line 165
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.indexAvailable:()Z
            ifeq 12
        10: .line 168
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.rowIndexEntrySerializer:Lorg/apache/cassandra/db/RowIndexEntry$IndexSerializer;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokeinterface org.apache.cassandra.db.RowIndexEntry$IndexSerializer.deserializePositionAndSkip:(Lorg/apache/cassandra/io/util/DataInputPlus;)J
            lstore 7 /* firstRowPositionFromIndex */
        start local 7 // long firstRowPositionFromIndex
        11: .line 169
            getstatic org.apache.cassandra.db.compaction.Scrubber.$assertionsDisabled:Z
            ifne 12
            lload 7 /* firstRowPositionFromIndex */
            lconst_0
            lcmp
            ifeq 12
            new java.lang.AssertionError
            dup
            lload 7 /* firstRowPositionFromIndex */
            invokespecial java.lang.AssertionError.<init>:(J)V
            athrow
        end local 7 // long firstRowPositionFromIndex
        12: .line 172
      StackMap locals:
      StackMap stack:
            aload 5 /* writer */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.destination:Ljava/io/File;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.expectedBloomFilterSize:J
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getSSTableMetadata:()Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            getfield org.apache.cassandra.io.sstable.metadata.StatsMetadata.repairedAt:J
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            invokestatic org.apache.cassandra.db.compaction.CompactionManager.createWriter:(Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/io/File;JJLorg/apache/cassandra/io/sstable/format/SSTableReader;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)Lorg/apache/cassandra/io/sstable/format/SSTableWriter;
            invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.switchWriter:(Lorg/apache/cassandra/io/sstable/format/SSTableWriter;)V
        13: .line 174
            aconst_null
            astore 7 /* prevKey */
        start local 7 // org.apache.cassandra.db.DecoratedKey prevKey
        14: .line 176
            goto 74
        15: .line 178
      StackMap locals: org.apache.cassandra.db.DecoratedKey
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.scrubInfo:Lorg/apache/cassandra/db/compaction/Scrubber$ScrubInfo;
            invokevirtual org.apache.cassandra.db.compaction.Scrubber$ScrubInfo.isStopRequested:()Z
            ifeq 17
        16: .line 179
            new org.apache.cassandra.db.compaction.CompactionInterruptedException
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.scrubInfo:Lorg/apache/cassandra/db/compaction/Scrubber$ScrubInfo;
            invokevirtual org.apache.cassandra.db.compaction.Scrubber$ScrubInfo.getCompactionInfo:()Lorg/apache/cassandra/db/compaction/CompactionInfo;
            invokespecial org.apache.cassandra.db.compaction.CompactionInterruptedException.<init>:(Lorg/apache/cassandra/db/compaction/CompactionInfo;)V
            athrow
        17: .line 181
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.getFilePointer:()J
            lstore 8 /* rowStart */
        start local 8 // long rowStart
        18: .line 182
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Reading row at "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 8 /* rowStart */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.debug:(Ljava/lang/String;)V
        19: .line 184
            aconst_null
            astore 10 /* key */
        start local 10 // org.apache.cassandra.db.DecoratedKey key
        20: .line 187
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength:(Ljava/io/DataInput;)Ljava/nio/ByteBuffer;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.decorateKey:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/db/DecoratedKey;
            astore 10 /* key */
        21: .line 188
            goto 24
        22: .line 189
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey long org.apache.cassandra.db.DecoratedKey
      StackMap stack: java.lang.Throwable
            astore 11 /* th */
        start local 11 // java.lang.Throwable th
        23: .line 191
            aload 0 /* this */
            aload 11 /* th */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfFatal:(Ljava/lang/Throwable;)V
        end local 11 // java.lang.Throwable th
        24: .line 195
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.updateIndexKey:()V
        25: .line 197
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.getFilePointer:()J
            lstore 11 /* dataStart */
        start local 11 // long dataStart
        26: .line 199
            ldc -1
            lstore 13 /* dataStartFromIndex */
        start local 13 // long dataStartFromIndex
        27: .line 200
            ldc -1
            lstore 15 /* dataSizeFromIndex */
        start local 15 // long dataSizeFromIndex
        28: .line 201
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            ifnull 31
        29: .line 203
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentRowPositionFromIndex:J
            ldc 2
            ladd
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            i2l
            ladd
            lstore 13 /* dataStartFromIndex */
        30: .line 204
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
            lload 13 /* dataStartFromIndex */
            lsub
            lstore 15 /* dataSizeFromIndex */
        31: .line 208
      StackMap locals: long long long
      StackMap stack:
            aload 10 /* key */
            ifnonnull 32
            ldc "(unreadable key)"
            goto 33
      StackMap locals:
      StackMap stack:
        32: aload 10 /* key */
            invokevirtual org.apache.cassandra.db.DecoratedKey.getKey:()Ljava/nio/ByteBuffer;
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.bytesToHex:(Ljava/nio/ByteBuffer;)Ljava/lang/String;
      StackMap locals:
      StackMap stack: java.lang.String
        33: astore 17 /* keyName */
        start local 17 // java.lang.String keyName
        34: .line 209
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "row %s is %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 17 /* keyName */
            aastore
            dup
            iconst_1
            lload 15 /* dataSizeFromIndex */
            invokestatic org.apache.cassandra.utils.FBUtilities.prettyPrintMemory:(J)Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.debug:(Ljava/lang/String;)V
        35: .line 211
            getstatic org.apache.cassandra.db.compaction.Scrubber.$assertionsDisabled:Z
            ifne 36
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            ifnonnull 36
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.indexAvailable:()Z
            ifeq 36
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        36: .line 215
      StackMap locals: java.lang.String
      StackMap stack:
            aload 10 /* key */
            ifnonnull 38
        37: .line 216
            new java.io.IOError
            dup
            new java.io.IOException
            dup
            ldc "Unable to read row key from data file"
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokespecial java.io.IOError.<init>:(Ljava/lang/Throwable;)V
            athrow
        38: .line 218
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            ifnull 42
            aload 10 /* key */
            invokevirtual org.apache.cassandra.db.DecoratedKey.getKey:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.equals:(Ljava/lang/Object;)Z
            ifne 42
        39: .line 220
            new java.io.IOError
            dup
            new java.io.IOException
            dup
            ldc "Key from data file (%s) does not match key from index file (%s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        40: .line 222
            ldc "_too big_"
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.bytesToHex:(Ljava/nio/ByteBuffer;)Ljava/lang/String;
            aastore
        41: .line 220
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokespecial java.io.IOError.<init>:(Ljava/lang/Throwable;)V
            athrow
        42: .line 225
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            ifnull 44
            lload 15 /* dataSizeFromIndex */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.length:()J
            lcmp
            ifle 44
        43: .line 226
            new java.io.IOError
            dup
            new java.io.IOException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Impossible row size (greater than file length): "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 15 /* dataSizeFromIndex */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
            invokespecial java.io.IOError.<init>:(Ljava/lang/Throwable;)V
            athrow
        44: .line 228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            ifnull 46
            lload 11 /* dataStart */
            lload 13 /* dataStartFromIndex */
            lcmp
            ifeq 46
        45: .line 229
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Data file row position %d differs from index file row position %d"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            lload 11 /* dataStart */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            lload 13 /* dataStartFromIndex */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
        46: .line 231
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* prevKey */
            aload 10 /* key */
            aload 5 /* writer */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.tryAppend:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/io/sstable/SSTableRewriter;)Z
            ifeq 74
        47: .line 232
            aload 10 /* key */
            astore 7 /* prevKey */
        48: .line 233
            goto 74
        49: .line 234
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 18 /* th */
        start local 18 // java.lang.Throwable th
        50: .line 236
            aload 0 /* this */
            aload 18 /* th */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfFatal:(Ljava/lang/Throwable;)V
        51: .line 237
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Error reading row (stacktrace follows):"
            aload 18 /* th */
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        52: .line 239
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            ifnull 69
        53: .line 240
            aload 10 /* key */
            ifnull 54
            aload 10 /* key */
            invokevirtual org.apache.cassandra.db.DecoratedKey.getKey:()Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.equals:(Ljava/lang/Object;)Z
            ifeq 54
            lload 11 /* dataStart */
            lload 13 /* dataStartFromIndex */
            lcmp
            ifeq 69
        54: .line 242
      StackMap locals: java.lang.Throwable
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Retrying from row index; data is %s bytes starting at %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        55: .line 243
            lload 15 /* dataSizeFromIndex */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            dup
            iconst_1
            lload 13 /* dataStartFromIndex */
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
        56: .line 242
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
        57: .line 244
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.decorateKey:(Ljava/nio/ByteBuffer;)Lorg/apache/cassandra/db/DecoratedKey;
            astore 10 /* key */
        58: .line 247
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            lload 13 /* dataStartFromIndex */
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.seek:(J)V
        59: .line 249
            aload 0 /* this */
            aload 7 /* prevKey */
            aload 10 /* key */
            aload 5 /* writer */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.tryAppend:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/io/sstable/SSTableRewriter;)Z
            ifeq 74
        60: .line 250
            aload 10 /* key */
            astore 7 /* prevKey */
        61: .line 251
            goto 74
        62: .line 252
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 19 /* th2 */
        start local 19 // java.lang.Throwable th2
        63: .line 254
            aload 0 /* this */
            aload 19 /* th2 */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfFatal:(Ljava/lang/Throwable;)V
        64: .line 255
            aload 0 /* this */
            aload 10 /* key */
            aload 19 /* th2 */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfCannotContinue:(Lorg/apache/cassandra/db/DecoratedKey;Ljava/lang/Throwable;)V
        65: .line 257
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Retry failed too. Skipping to next row (retry's stacktrace follows)"
            aload 19 /* th2 */
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        66: .line 258
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            iconst_1
            iadd
            putfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
        67: .line 259
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.seekToNextRow:()V
        end local 19 // java.lang.Throwable th2
        68: .line 261
            goto 74
        69: .line 264
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 10 /* key */
            aload 18 /* th */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfCannotContinue:(Lorg/apache/cassandra/db/DecoratedKey;Ljava/lang/Throwable;)V
        70: .line 266
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Row starting at position "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            lload 11 /* dataStart */
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            ldc " is unreadable; skipping to next"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
        71: .line 267
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            iconst_1
            iadd
            putfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
        72: .line 268
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
            ifnull 74
        73: .line 269
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.seekToNextRow:()V
        end local 18 // java.lang.Throwable th
        end local 17 // java.lang.String keyName
        end local 15 // long dataSizeFromIndex
        end local 13 // long dataStartFromIndex
        end local 11 // long dataStart
        end local 10 // org.apache.cassandra.db.DecoratedKey key
        end local 8 // long rowStart
        74: .line 176
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.isEOF:()Z
            ifeq 15
        75: .line 274
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
            invokeinterface java.util.SortedSet.isEmpty:()Z
            ifne 95
        76: .line 277
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            ifle 77
            lconst_0
            goto 78
      StackMap locals:
      StackMap stack:
        77: aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getSSTableMetadata:()Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            getfield org.apache.cassandra.io.sstable.metadata.StatsMetadata.repairedAt:J
      StackMap locals:
      StackMap stack: long
        78: lstore 8 /* repairedAt */
        start local 8 // long repairedAt
        79: .line 279
            aconst_null
            astore 11
            aconst_null
            astore 12
        80: aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.destination:Ljava/io/File;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.expectedBloomFilterSize:J
            lload 8 /* repairedAt */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            invokestatic org.apache.cassandra.db.compaction.CompactionManager.createWriter:(Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/io/File;JJLorg/apache/cassandra/io/sstable/format/SSTableReader;Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;)Lorg/apache/cassandra/io/sstable/format/SSTableWriter;
            astore 13 /* inOrderWriter */
        start local 13 // org.apache.cassandra.io.sstable.format.SSTableWriter inOrderWriter
        81: .line 281
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
            invokeinterface java.util.SortedSet.iterator:()Ljava/util/Iterator;
            astore 15
            goto 84
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey long top java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.format.SSTableWriter top java.util.Iterator
      StackMap stack:
        82: aload 15
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.partitions.Partition
            astore 14 /* partition */
        start local 14 // org.apache.cassandra.db.partitions.Partition partition
        83: .line 282
            aload 13 /* inOrderWriter */
            aload 14 /* partition */
            invokeinterface org.apache.cassandra.db.partitions.Partition.unfilteredIterator:()Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableWriter.append:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)Lorg/apache/cassandra/db/RowIndexEntry;
            pop
        end local 14 // org.apache.cassandra.db.partitions.Partition partition
        84: .line 281
      StackMap locals:
      StackMap stack:
            aload 15
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 82
        85: .line 283
            aload 13 /* inOrderWriter */
            ldc -1
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.maxDataAge:J
            iconst_1
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableWriter.finish:(JJZ)Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            astore 10 /* newInOrderSstable */
        start local 10 // org.apache.cassandra.io.sstable.format.SSTableReader newInOrderSstable
        86: .line 284
            aload 13 /* inOrderWriter */
            ifnull 92
            aload 13 /* inOrderWriter */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableWriter.close:()V
            goto 92
        end local 10 // org.apache.cassandra.io.sstable.format.SSTableReader newInOrderSstable
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey long top java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.format.SSTableWriter
      StackMap stack: java.lang.Throwable
        87: astore 11
            aload 13 /* inOrderWriter */
            ifnull 88
            aload 13 /* inOrderWriter */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableWriter.close:()V
        end local 13 // org.apache.cassandra.io.sstable.format.SSTableWriter inOrderWriter
      StackMap locals:
      StackMap stack:
        88: aload 11
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        89: astore 12
            aload 11
            ifnonnull 90
            aload 12
            astore 11
            goto 91
      StackMap locals:
      StackMap stack:
        90: aload 11
            aload 12
            if_acmpeq 91
            aload 11
            aload 12
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        91: aload 11
            athrow
        start local 10 // org.apache.cassandra.io.sstable.format.SSTableReader newInOrderSstable
        92: .line 285
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey long org.apache.cassandra.io.sstable.format.SSTableReader
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            aload 10 /* newInOrderSstable */
            iconst_0
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.update:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;Z)V
        93: .line 286
            aload 1 /* finished */
            aload 10 /* newInOrderSstable */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        94: .line 287
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "%d out of order rows found while scrubbing %s; Those have been written (in order) to a new sstable (%s)"
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
            invokeinterface java.util.SortedSet.size:()I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aastore
            dup
            iconst_2
            aload 10 /* newInOrderSstable */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
        end local 10 // org.apache.cassandra.io.sstable.format.SSTableReader newInOrderSstable
        end local 8 // long repairedAt
        95: .line 291
      StackMap locals:
      StackMap stack:
            aload 1 /* finished */
            aload 5 /* writer */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            ifle 96
            lconst_0
            goto 97
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey
      StackMap stack: java.util.List org.apache.cassandra.io.sstable.SSTableRewriter
        96: aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.getSSTableMetadata:()Lorg/apache/cassandra/io/sstable/metadata/StatsMetadata;
            getfield org.apache.cassandra.io.sstable.metadata.StatsMetadata.repairedAt:J
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs org.apache.cassandra.db.DecoratedKey
      StackMap stack: java.util.List org.apache.cassandra.io.sstable.SSTableRewriter long
        97: invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.setRepairedAt:(J)Lorg/apache/cassandra/io/sstable/SSTableRewriter;
            invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.finish:()Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        98: .line 292
            iconst_1
            istore 2 /* completed */
        end local 7 // org.apache.cassandra.db.DecoratedKey prevKey
        99: .line 293
            aload 6 /* refs */
            ifnull 102
            aload 6 /* refs */
            invokevirtual org.apache.cassandra.utils.concurrent.Refs.close:()V
            goto 102
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int java.lang.Throwable java.lang.Throwable org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.utils.concurrent.Refs
      StackMap stack: java.lang.Throwable
       100: astore 3
            aload 6 /* refs */
            ifnull 101
            aload 6 /* refs */
            invokevirtual org.apache.cassandra.utils.concurrent.Refs.close:()V
        end local 6 // org.apache.cassandra.utils.concurrent.Refs refs
      StackMap locals:
      StackMap stack:
       101: aload 3
            athrow
      StackMap locals:
      StackMap stack:
       102: aload 5 /* writer */
            ifnull 116
            aload 5 /* writer */
            invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.close:()V
            goto 116
      StackMap locals:
      StackMap stack: java.lang.Throwable
       103: astore 4
            aload 3
            ifnonnull 104
            aload 4
            astore 3
            goto 105
      StackMap locals:
      StackMap stack:
       104: aload 3
            aload 4
            if_acmpeq 105
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
       105: aload 5 /* writer */
            ifnull 106
            aload 5 /* writer */
            invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.close:()V
        end local 5 // org.apache.cassandra.io.sstable.SSTableRewriter writer
      StackMap locals:
      StackMap stack:
       106: aload 3
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
       107: astore 4
            aload 3
            ifnonnull 108
            aload 4
            astore 3
            goto 109
      StackMap locals:
      StackMap stack:
       108: aload 3
            aload 4
            if_acmpeq 109
            aload 3
            aload 4
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
       109: aload 3
            athrow
       110: .line 294
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int
      StackMap stack: java.io.IOException
            astore 3 /* e */
        start local 3 // java.io.IOException e
       111: .line 296
            aload 3 /* e */
            invokestatic com.google.common.base.Throwables.propagate:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            athrow
        end local 3 // java.io.IOException e
       112: .line 299
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 20
       113: .line 300
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.isOffline:()Z
            ifeq 115
       114: .line 301
            aload 1 /* finished */
            invokedynamic accept()Ljava/util/function/Consumer;
              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;)V
                  org/apache/cassandra/db/compaction/Scrubber.lambda$0(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V (6)
                  (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
       115: .line 302
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int top top top top top top top top top top top top top top top top top java.lang.Throwable
      StackMap stack:
            aload 20
            athrow
       116: .line 300
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber java.util.List int
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.transaction:Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.isOffline:()Z
            ifeq 118
       117: .line 301
            aload 1 /* finished */
            invokedynamic accept()Ljava/util/function/Consumer;
              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;)V
                  org/apache/cassandra/db/compaction/Scrubber.lambda$0(Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V (6)
                  (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
            invokeinterface java.util.List.forEach:(Ljava/util/function/Consumer;)V
       118: .line 304
      StackMap locals:
      StackMap stack:
            iload 2 /* completed */
            ifeq 125
       119: .line 306
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Scrub of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " complete: "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.goodRows:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " rows in new sstable and "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.emptyRows:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " empty (tombstoned) rows dropped"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
       120: .line 307
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.negativeLocalDeletionInfoMetrics:Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;
            getfield org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics.fixedRows:I
            ifle 122
       121: .line 308
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Fixed "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.negativeLocalDeletionInfoMetrics:Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;
            getfield org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics.fixedRows:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " rows with overflowed local deletion time."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
       122: .line 309
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            ifle 128
       123: .line 310
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Unable to recover "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " rows that were skipped.  You can attempt manual recovery from the pre-scrub snapshot.  You can also run nodetool repair to transfer the data from a healthy replica, if any"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
       124: .line 311
            goto 128
       125: .line 314
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            ifle 127
       126: .line 315
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "No valid rows found while scrubbing "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "; it is marked for deletion now. If you want to attempt manual recovery, you can find a copy in the pre-scrub snapshot"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
            goto 128
       127: .line 317
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            new java.lang.StringBuilder
            dup
            ldc "Scrub of "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc " complete; looks like all "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.emptyRows:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " rows were tombstoned"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.output:(Ljava/lang/String;)V
       128: .line 319
      StackMap locals:
      StackMap stack:
            return
        end local 2 // boolean completed
        end local 1 // java.util.List finished
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot                       Name  Signature
            0  129     0                       this  Lorg/apache/cassandra/db/compaction/Scrubber;
            1  129     1                   finished  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            2  129     2                  completed  Z
            5  106     5                     writer  Lorg/apache/cassandra/io/sstable/SSTableRewriter;
            6  101     6                       refs  Lorg/apache/cassandra/utils/concurrent/Refs<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           11   12     7  firstRowPositionFromIndex  J
           14   99     7                    prevKey  Lorg/apache/cassandra/db/DecoratedKey;
           18   74     8                   rowStart  J
           20   74    10                        key  Lorg/apache/cassandra/db/DecoratedKey;
           23   24    11                         th  Ljava/lang/Throwable;
           26   74    11                  dataStart  J
           27   74    13         dataStartFromIndex  J
           28   74    15          dataSizeFromIndex  J
           34   74    17                    keyName  Ljava/lang/String;
           50   74    18                         th  Ljava/lang/Throwable;
           63   68    19                        th2  Ljava/lang/Throwable;
           79   95     8                 repairedAt  J
           86   87    10          newInOrderSstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
           92   95    10          newInOrderSstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
           81   88    13              inOrderWriter  Lorg/apache/cassandra/io/sstable/format/SSTableWriter;
           83   84    14                  partition  Lorg/apache/cassandra/db/partitions/Partition;
          111  112     3                          e  Ljava/io/IOException;
      Exception table:
        from    to  target  type
          20    21      22  Class java.lang.Throwable
          36    48      49  Class java.lang.Throwable
          58    61      62  Class java.lang.Throwable
          81    86      87  any
          80    89      89  any
           6    99     100  any
           5   102     103  any
           4   107     107  any
           3   110     110  Class java.io.IOException
           3   112     112  any

  private boolean tryAppend(org.apache.cassandra.db.DecoratedKey, org.apache.cassandra.db.DecoratedKey, org.apache.cassandra.io.sstable.SSTableRewriter);
    descriptor: (Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/io/sstable/SSTableRewriter;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=8, args_size=4
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.DecoratedKey prevKey
        start local 2 // org.apache.cassandra.db.DecoratedKey key
        start local 3 // org.apache.cassandra.io.sstable.SSTableRewriter writer
         0: .line 327
            new org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator
            dup
            aload 0 /* this */
            aload 2 /* key */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.getIterator:(Lorg/apache/cassandra/db/DecoratedKey;)Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
         1: .line 328
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.cfs:Lorg/apache/cassandra/db/ColumnFamilyStore;
            getfield org.apache.cassandra.db.ColumnFamilyStore.metadata:Lorg/apache/cassandra/config/CFMetaData;
            getfield org.apache.cassandra.config.CFMetaData.comparator:Lorg/apache/cassandra/db/ClusteringComparator;
         2: .line 327
            invokespecial org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator.<init>:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;Lorg/apache/cassandra/db/ClusteringComparator;)V
            astore 4 /* sstableIterator */
        start local 4 // org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator sstableIterator
         3: .line 330
            aconst_null
            astore 5
            aconst_null
            astore 6
         4: aload 0 /* this */
            aload 4 /* sstableIterator */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.getPath:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.withValidation:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;Ljava/lang/String;)Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
            astore 7 /* iterator */
        start local 7 // org.apache.cassandra.db.rows.UnfilteredRowIterator iterator
         5: .line 332
            aload 1 /* prevKey */
            ifnull 9
            aload 1 /* prevKey */
            aload 2 /* key */
            invokevirtual org.apache.cassandra.db.DecoratedKey.compareTo:(Lorg/apache/cassandra/db/PartitionPosition;)I
            ifle 9
         6: .line 334
            aload 0 /* this */
            aload 1 /* prevKey */
            aload 2 /* key */
            aload 7 /* iterator */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.saveOutOfOrderRow:(Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)V
         7: .line 342
            aload 7 /* iterator */
            ifnull 8
            aload 7 /* iterator */
            invokeinterface org.apache.cassandra.db.rows.UnfilteredRowIterator.close:()V
         8: .line 335
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber org.apache.cassandra.db.DecoratedKey org.apache.cassandra.db.DecoratedKey org.apache.cassandra.io.sstable.SSTableRewriter org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.rows.UnfilteredRowIterator
      StackMap stack:
            iconst_0
            ireturn
         9: .line 338
      StackMap locals:
      StackMap stack:
            aload 3 /* writer */
            aload 7 /* iterator */
            invokevirtual org.apache.cassandra.io.sstable.SSTableRewriter.tryAppend:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)Lorg/apache/cassandra/db/RowIndexEntry;
            ifnonnull 11
        10: .line 339
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.db.compaction.Scrubber.emptyRows:I
            iconst_1
            iadd
            putfield org.apache.cassandra.db.compaction.Scrubber.emptyRows:I
            goto 12
        11: .line 341
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.db.compaction.Scrubber.goodRows:I
            iconst_1
            iadd
            putfield org.apache.cassandra.db.compaction.Scrubber.goodRows:I
        12: .line 342
      StackMap locals:
      StackMap stack:
            aload 7 /* iterator */
            ifnull 18
            aload 7 /* iterator */
            invokeinterface org.apache.cassandra.db.rows.UnfilteredRowIterator.close:()V
            goto 18
      StackMap locals:
      StackMap stack: java.lang.Throwable
        13: astore 5
            aload 7 /* iterator */
            ifnull 14
            aload 7 /* iterator */
            invokeinterface org.apache.cassandra.db.rows.UnfilteredRowIterator.close:()V
        end local 7 // org.apache.cassandra.db.rows.UnfilteredRowIterator iterator
      StackMap locals:
      StackMap stack:
        14: aload 5
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        15: astore 6
            aload 5
            ifnonnull 16
            aload 6
            astore 5
            goto 17
      StackMap locals:
      StackMap stack:
        16: aload 5
            aload 6
            if_acmpeq 17
            aload 5
            aload 6
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        17: aload 5
            athrow
        18: .line 344
      StackMap locals:
      StackMap stack:
            aload 4 /* sstableIterator */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator.hasRowsOutOfOrder:()Z
            ifeq 21
        19: .line 346
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Out of order rows found in partition: %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* key */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
        20: .line 347
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
            aload 4 /* sstableIterator */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator.getRowsOutOfOrder:()Lorg/apache/cassandra/db/partitions/Partition;
            invokeinterface java.util.SortedSet.add:(Ljava/lang/Object;)Z
            pop
        21: .line 350
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 4 // org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator sstableIterator
        end local 3 // org.apache.cassandra.io.sstable.SSTableRewriter writer
        end local 2 // org.apache.cassandra.db.DecoratedKey key
        end local 1 // org.apache.cassandra.db.DecoratedKey prevKey
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   22     0             this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0   22     1          prevKey  Lorg/apache/cassandra/db/DecoratedKey;
            0   22     2              key  Lorg/apache/cassandra/db/DecoratedKey;
            0   22     3           writer  Lorg/apache/cassandra/io/sstable/SSTableRewriter;
            3   22     4  sstableIterator  Lorg/apache/cassandra/db/compaction/Scrubber$OrderCheckerIterator;
            5   14     7         iterator  Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
      Exception table:
        from    to  target  type
           5     7      13  any
           9    12      13  any
           4     8      15  any
           9    15      15  any
    MethodParameters:
         Name  Flags
      prevKey  
      key      
      writer   

  private org.apache.cassandra.db.rows.UnfilteredRowIterator getIterator(org.apache.cassandra.db.DecoratedKey);
    descriptor: (Lorg/apache/cassandra/db/DecoratedKey;)Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.DecoratedKey key
         0: .line 359
            new org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.sstable:Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            aload 1 /* key */
            invokestatic org.apache.cassandra.io.sstable.SSTableIdentityIterator.create:(Lorg/apache/cassandra/io/sstable/format/SSTableReader;Lorg/apache/cassandra/io/util/RandomAccessReader;Lorg/apache/cassandra/db/DecoratedKey;)Lorg/apache/cassandra/io/sstable/SSTableIdentityIterator;
            invokespecial org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator.<init>:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)V
            astore 2 /* rowMergingIterator */
        start local 2 // org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator rowMergingIterator
         1: .line 360
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.reinsertOverflowedTTLRows:Z
            ifeq 4
            new org.apache.cassandra.db.compaction.Scrubber$FixNegativeLocalDeletionTimeIterator
            dup
            aload 2 /* rowMergingIterator */
         2: .line 361
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
         3: .line 362
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.negativeLocalDeletionInfoMetrics:Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;
            invokespecial org.apache.cassandra.db.compaction.Scrubber$FixNegativeLocalDeletionTimeIterator.<init>:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;Lorg/apache/cassandra/utils/OutputHandler;Lorg/apache/cassandra/db/compaction/Scrubber$NegativeLocalDeletionInfoMetrics;)V
            goto 5
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator
      StackMap stack:
         4: aload 2 /* rowMergingIterator */
         5: .line 360
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.rows.UnfilteredRowIterator
            areturn
        end local 2 // org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator rowMergingIterator
        end local 1 // org.apache.cassandra.db.DecoratedKey key
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    6     0                this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    6     1                 key  Lorg/apache/cassandra/db/DecoratedKey;
            1    6     2  rowMergingIterator  Lorg/apache/cassandra/db/compaction/Scrubber$RowMergingSSTableIterator;
    MethodParameters:
      Name  Flags
      key   

  private void updateIndexKey();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 367
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextIndexKey:Ljava/nio/ByteBuffer;
            putfield org.apache.cassandra.db.compaction.Scrubber.currentIndexKey:Ljava/nio/ByteBuffer;
         1: .line 368
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
            putfield org.apache.cassandra.db.compaction.Scrubber.currentRowPositionFromIndex:J
         2: .line 371
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.indexAvailable:()Z
            ifne 3
            aconst_null
            goto 4
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
         3: aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokestatic org.apache.cassandra.utils.ByteBufferUtil.readWithShortLength:(Ljava/io/DataInput;)Ljava/nio/ByteBuffer;
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber java.nio.ByteBuffer
         4: putfield org.apache.cassandra.db.compaction.Scrubber.nextIndexKey:Ljava/nio/ByteBuffer;
         5: .line 373
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.indexAvailable:()Z
            ifne 7
         6: .line 374
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.length:()J
            goto 8
         7: .line 375
      StackMap locals:
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.rowIndexEntrySerializer:Lorg/apache/cassandra/db/RowIndexEntry$IndexSerializer;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokeinterface org.apache.cassandra.db.RowIndexEntry$IndexSerializer.deserializePositionAndSkip:(Lorg/apache/cassandra/io/util/DataInputPlus;)J
         8: .line 373
      StackMap locals: org.apache.cassandra.db.compaction.Scrubber
      StackMap stack: org.apache.cassandra.db.compaction.Scrubber long
            putfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
         9: .line 376
            goto 15
        10: .line 377
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* th */
        start local 1 // java.lang.Throwable th
        11: .line 379
            aload 1 /* th */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        12: .line 380
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Error reading index file"
            aload 1 /* th */
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
        13: .line 381
            aload 0 /* this */
            aconst_null
            putfield org.apache.cassandra.db.compaction.Scrubber.nextIndexKey:Ljava/nio/ByteBuffer;
        14: .line 382
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.length:()J
            putfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
        end local 1 // java.lang.Throwable th
        15: .line 384
      StackMap locals:
      StackMap stack:
            return
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   16     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;
           11   15     1    th  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           2     9      10  Class java.lang.Throwable

  private boolean indexAvailable();
    descriptor: ()Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 388
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            ifnull 1
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.isEOF:()Z
            ifne 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;

  private void seekToNextRow();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=2, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 393
            goto 8
         1: .line 397
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.seek:(J)V
         2: .line 398
            return
         3: .line 400
      StackMap locals:
      StackMap stack: java.lang.Throwable
            astore 1 /* th */
        start local 1 // java.lang.Throwable th
         4: .line 402
            aload 0 /* this */
            aload 1 /* th */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.throwIfFatal:(Ljava/lang/Throwable;)V
         5: .line 403
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Failed to seek to next row position %d"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
            invokestatic java.lang.Long.valueOf:(J)Ljava/lang/Long;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            aload 1 /* th */
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;Ljava/lang/Throwable;)V
         6: .line 404
            aload 0 /* this */
            dup
            getfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
            iconst_1
            iadd
            putfield org.apache.cassandra.db.compaction.Scrubber.badRows:I
        end local 1 // java.lang.Throwable th
         7: .line 407
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.updateIndexKey:()V
         8: .line 393
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.nextRowPositionFromIndex:J
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokevirtual org.apache.cassandra.io.util.RandomAccessReader.length:()J
            lcmp
            iflt 1
         9: .line 409
            return
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;
            4    7     1    th  Ljava/lang/Throwable;
      Exception table:
        from    to  target  type
           1     2       3  Class java.lang.Throwable

  private void saveOutOfOrderRow(org.apache.cassandra.db.DecoratedKey, org.apache.cassandra.db.DecoratedKey, org.apache.cassandra.db.rows.UnfilteredRowIterator);
    descriptor: (Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/DecoratedKey;Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=4, args_size=4
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.DecoratedKey prevKey
        start local 2 // org.apache.cassandra.db.DecoratedKey key
        start local 3 // org.apache.cassandra.db.rows.UnfilteredRowIterator iterator
         0: .line 414
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "Out of order row detected (%s found after %s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* key */
            aastore
            dup
            iconst_1
            aload 1 /* prevKey */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
         1: .line 415
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outOfOrder:Ljava/util/SortedSet;
            aload 3 /* iterator */
            invokestatic org.apache.cassandra.db.partitions.ImmutableBTreePartition.create:(Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;)Lorg/apache/cassandra/db/partitions/ImmutableBTreePartition;
            invokeinterface java.util.SortedSet.add:(Ljava/lang/Object;)Z
            pop
         2: .line 416
            return
        end local 3 // org.apache.cassandra.db.rows.UnfilteredRowIterator iterator
        end local 2 // org.apache.cassandra.db.DecoratedKey key
        end local 1 // org.apache.cassandra.db.DecoratedKey prevKey
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    3     1   prevKey  Lorg/apache/cassandra/db/DecoratedKey;
            0    3     2       key  Lorg/apache/cassandra/db/DecoratedKey;
            0    3     3  iterator  Lorg/apache/cassandra/db/rows/UnfilteredRowIterator;
    MethodParameters:
          Name  Flags
      prevKey   
      key       
      iterator  

  private void throwIfFatal(java.lang.Throwable);
    descriptor: (Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // java.lang.Throwable th
         0: .line 420
            aload 1 /* th */
            instanceof java.lang.Error
            ifeq 2
            aload 1 /* th */
            instanceof java.lang.AssertionError
            ifne 2
            aload 1 /* th */
            instanceof java.io.IOError
            ifne 2
         1: .line 421
            aload 1 /* th */
            checkcast java.lang.Error
            athrow
         2: .line 422
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.lang.Throwable th
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0    3     1    th  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      th    

  private void throwIfCannotContinue(org.apache.cassandra.db.DecoratedKey, java.lang.Throwable);
    descriptor: (Lorg/apache/cassandra/db/DecoratedKey;Ljava/lang/Throwable;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=3, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
        start local 1 // org.apache.cassandra.db.DecoratedKey key
        start local 2 // java.lang.Throwable th
         0: .line 426
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.isIndex:Z
            ifeq 5
         1: .line 428
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "An error occurred while scrubbing the row with key '%s' for an index table. Scrubbing will abort for this table and the index will be rebuilt."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         2: .line 429
            aload 1 /* key */
            aastore
         3: .line 428
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
         4: .line 430
            new java.io.IOError
            dup
            aload 2 /* th */
            invokespecial java.io.IOError.<init>:(Ljava/lang/Throwable;)V
            athrow
         5: .line 433
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.isCommutative:Z
            ifeq 10
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.skipCorrupted:Z
            ifne 10
         6: .line 435
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.outputHandler:Lorg/apache/cassandra/utils/OutputHandler;
            ldc "An error occurred while scrubbing the row with key '%s'.  Skipping corrupt rows in counter tables will result in undercounts for the affected counters (see CASSANDRA-2759 for more details), so by default the scrub will stop at this point.  If you would like to skip the row anyway and continue scrubbing, re-run the scrub with the --skip-corrupted option."
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
         7: .line 439
            aload 1 /* key */
            aastore
         8: .line 435
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokeinterface org.apache.cassandra.utils.OutputHandler.warn:(Ljava/lang/String;)V
         9: .line 440
            new java.io.IOError
            dup
            aload 2 /* th */
            invokespecial java.io.IOError.<init>:(Ljava/lang/Throwable;)V
            athrow
        10: .line 442
      StackMap locals:
      StackMap stack:
            return
        end local 2 // java.lang.Throwable th
        end local 1 // org.apache.cassandra.db.DecoratedKey key
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;
            0   11     1   key  Lorg/apache/cassandra/db/DecoratedKey;
            0   11     2    th  Ljava/lang/Throwable;
    MethodParameters:
      Name  Flags
      key   
      th    

  public void close();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 446
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.dataFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
         1: .line 447
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.indexFile:Lorg/apache/cassandra/io/util/RandomAccessReader;
            invokestatic org.apache.cassandra.io.util.FileUtils.closeQuietly:(Ljava/io/Closeable;)V
         2: .line 448
            return
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;

  public org.apache.cassandra.db.compaction.CompactionInfo$Holder getScrubInfo();
    descriptor: ()Lorg/apache/cassandra/db/compaction/CompactionInfo$Holder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 452
            aload 0 /* this */
            getfield org.apache.cassandra.db.compaction.Scrubber.scrubInfo:Lorg/apache/cassandra/db/compaction/Scrubber$ScrubInfo;
            areturn
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;

  public org.apache.cassandra.db.compaction.Scrubber$ScrubResult scrubWithResult();
    descriptor: ()Lorg/apache/cassandra/db/compaction/Scrubber$ScrubResult;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.db.compaction.Scrubber this
         0: .line 488
            aload 0 /* this */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.scrub:()V
         1: .line 489
            new org.apache.cassandra.db.compaction.Scrubber$ScrubResult
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.db.compaction.Scrubber$ScrubResult.<init>:(Lorg/apache/cassandra/db/compaction/Scrubber;)V
            areturn
        end local 0 // org.apache.cassandra.db.compaction.Scrubber this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/db/compaction/Scrubber;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()

  private static void lambda$0(org.apache.cassandra.io.sstable.format.SSTableReader);
    descriptor: (Lorg/apache/cassandra/io/sstable/format/SSTableReader;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
         0: .line 301
            aload 0 /* sstable */
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.selfRef:()Lorg/apache/cassandra/utils/concurrent/Ref;
            invokevirtual org.apache.cassandra.utils.concurrent.Ref.release:()V
            return
        end local 0 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
}
SourceFile: "Scrubber.java"
NestMembers:
  org.apache.cassandra.db.compaction.Scrubber$1  org.apache.cassandra.db.compaction.Scrubber$FixNegativeLocalDeletionTimeIterator  org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics  org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator  org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator  org.apache.cassandra.db.compaction.Scrubber$ScrubInfo  org.apache.cassandra.db.compaction.Scrubber$ScrubResult
InnerClasses:
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles
  public DataDirectory = org.apache.cassandra.db.Directories$DataDirectory of org.apache.cassandra.db.Directories
  public abstract IndexSerializer = org.apache.cassandra.db.RowIndexEntry$IndexSerializer of org.apache.cassandra.db.RowIndexEntry
  public abstract Holder = org.apache.cassandra.db.compaction.CompactionInfo$Holder of org.apache.cassandra.db.compaction.CompactionInfo
  org.apache.cassandra.db.compaction.Scrubber$1
  private final FixNegativeLocalDeletionTimeIterator = org.apache.cassandra.db.compaction.Scrubber$FixNegativeLocalDeletionTimeIterator of org.apache.cassandra.db.compaction.Scrubber
  public NegativeLocalDeletionInfoMetrics = org.apache.cassandra.db.compaction.Scrubber$NegativeLocalDeletionInfoMetrics of org.apache.cassandra.db.compaction.Scrubber
  private final OrderCheckerIterator = org.apache.cassandra.db.compaction.Scrubber$OrderCheckerIterator of org.apache.cassandra.db.compaction.Scrubber
  private RowMergingSSTableIterator = org.apache.cassandra.db.compaction.Scrubber$RowMergingSSTableIterator of org.apache.cassandra.db.compaction.Scrubber
  private ScrubInfo = org.apache.cassandra.db.compaction.Scrubber$ScrubInfo of org.apache.cassandra.db.compaction.Scrubber
  public final ScrubResult = org.apache.cassandra.db.compaction.Scrubber$ScrubResult of org.apache.cassandra.db.compaction.Scrubber
  public LogOutput = org.apache.cassandra.utils.OutputHandler$LogOutput of org.apache.cassandra.utils.OutputHandler