public class org.apache.cassandra.tools.StandaloneScrubber
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.tools.StandaloneScrubber
  super_class: java.lang.Object
{
  public static final java.lang.String REINSERT_OVERFLOWED_TTL_OPTION_DESCRIPTION;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "Rewrites rows with overflowed expiration date affected by CASSANDRA-14092 with the maximum supported expiration date of 2038-01-19T03:14:06+00:00. The rows are rewritten with the original timestamp incremented by one millisecond to override/supersede any potential tombstone that may have been generated during compaction of the affected rows."

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

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

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

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

  private static final java.lang.String MANIFEST_CHECK_OPTION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "manifest-check"

  private static final java.lang.String SKIP_CORRUPTED_OPTION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "skip-corrupted"

  private static final java.lang.String NO_VALIDATE_OPTION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "no-validate"

  private static final java.lang.String REINSERT_OVERFLOWED_TTL_OPTION;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "reinsert-overflowed-ttl"

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

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=16, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 63
            aload 0 /* args */
            invokestatic org.apache.cassandra.tools.StandaloneScrubber$Options.parseArgs:([Ljava/lang/String;)Lorg/apache/cassandra/tools/StandaloneScrubber$Options;
            astore 1 /* options */
        start local 1 // org.apache.cassandra.tools.StandaloneScrubber$Options options
         1: .line 64
            invokestatic org.apache.cassandra.tools.Util.initDatabaseDescriptor:()V
         2: .line 69
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            iconst_0
            invokevirtual org.apache.cassandra.config.Schema.loadFromDisk:(Z)Lorg/apache/cassandra/config/Schema;
            pop
         3: .line 71
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.keyspaceName:Ljava/lang/String;
            invokevirtual org.apache.cassandra.config.Schema.getKSMetaData:(Ljava/lang/String;)Lorg/apache/cassandra/schema/KeyspaceMetadata;
            ifnonnull 5
         4: .line 72
            new java.lang.IllegalArgumentException
            dup
            ldc "Unknown keyspace %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.keyspaceName:Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 75
      StackMap locals: org.apache.cassandra.tools.StandaloneScrubber$Options
      StackMap stack:
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.keyspaceName:Ljava/lang/String;
            invokestatic org.apache.cassandra.db.Keyspace.openWithoutSSTables:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            astore 2 /* keyspace */
        start local 2 // org.apache.cassandra.db.Keyspace keyspace
         6: .line 77
            aconst_null
            astore 3 /* cfs */
        start local 3 // org.apache.cassandra.db.ColumnFamilyStore cfs
         7: .line 78
            aload 2 /* keyspace */
            iconst_1
            iconst_0
            iconst_1
            anewarray java.lang.String
            dup
            iconst_0
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.cfName:Ljava/lang/String;
            aastore
            invokevirtual org.apache.cassandra.db.Keyspace.getValidColumnFamilies:(ZZ[Ljava/lang/String;)Ljava/lang/Iterable;
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 5
            goto 12
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore top java.util.Iterator
      StackMap stack:
         8: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.ColumnFamilyStore
            astore 4 /* c */
        start local 4 // org.apache.cassandra.db.ColumnFamilyStore c
         9: .line 80
            aload 4 /* c */
            getfield org.apache.cassandra.db.ColumnFamilyStore.name:Ljava/lang/String;
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.cfName:Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
        10: .line 82
            aload 4 /* c */
            astore 3 /* cfs */
        11: .line 83
            goto 13
        end local 4 // org.apache.cassandra.db.ColumnFamilyStore c
        12: .line 78
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        13: .line 87
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore
      StackMap stack:
            aload 3 /* cfs */
            ifnonnull 18
        14: .line 88
            new java.lang.IllegalArgumentException
            dup
            ldc "Unknown table %s.%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        15: .line 89
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.keyspaceName:Ljava/lang/String;
            aastore
            dup
            iconst_1
        16: .line 90
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.cfName:Ljava/lang/String;
            aastore
        17: .line 88
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        18: .line 92
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "pre-scrub-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            invokestatic java.lang.System.currentTimeMillis:()J
            invokevirtual java.lang.StringBuilder.append:(J)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 4 /* snapshotName */
        start local 4 // java.lang.String snapshotName
        19: .line 94
            new org.apache.cassandra.utils.OutputHandler$SystemOutput
            dup
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.verbose:Z
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.debug:Z
            invokespecial org.apache.cassandra.utils.OutputHandler$SystemOutput.<init>:(ZZ)V
            astore 5 /* handler */
        start local 5 // org.apache.cassandra.utils.OutputHandler handler
        20: .line 95
            aload 3 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getDirectories:()Lorg/apache/cassandra/db/Directories;
            getstatic org.apache.cassandra.db.Directories$OnTxnErr.THROW:Lorg/apache/cassandra/db/Directories$OnTxnErr;
            invokevirtual org.apache.cassandra.db.Directories.sstableLister:(Lorg/apache/cassandra/db/Directories$OnTxnErr;)Lorg/apache/cassandra/db/Directories$SSTableLister;
            iconst_1
            invokevirtual org.apache.cassandra.db.Directories$SSTableLister.skipTemporary:(Z)Lorg/apache/cassandra/db/Directories$SSTableLister;
            astore 6 /* lister */
        start local 6 // org.apache.cassandra.db.Directories$SSTableLister lister
        21: .line 97
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 7 /* sstables */
        start local 7 // java.util.List sstables
        22: .line 100
            aload 6 /* lister */
            invokevirtual org.apache.cassandra.db.Directories$SSTableLister.list:()Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 9
            goto 37
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List top java.util.Iterator
      StackMap stack:
        23: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 8 /* entry */
        start local 8 // java.util.Map$Entry entry
        24: .line 102
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.Set
            astore 10 /* components */
        start local 10 // java.util.Set components
        25: .line 103
            aload 10 /* components */
            getstatic org.apache.cassandra.io.sstable.Component.DATA:Lorg/apache/cassandra/io/sstable/Component;
            invokeinterface java.util.Set.contains:(Ljava/lang/Object;)Z
            ifne 27
        26: .line 104
            goto 37
        27: .line 108
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List java.util.Map$Entry java.util.Iterator java.util.Set
      StackMap stack:
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.Descriptor
            aload 10 /* components */
            aload 3 /* cfs */
            invokestatic org.apache.cassandra.io.sstable.format.SSTableReader.openNoValidation:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Set;Lorg/apache/cassandra/db/ColumnFamilyStore;)Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            astore 11 /* sstable */
        start local 11 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        28: .line 109
            aload 7 /* sstables */
            aload 11 /* sstable */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        29: .line 111
            aload 11 /* sstable */
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            aload 4 /* snapshotName */
            invokestatic org.apache.cassandra.db.Directories.getSnapshotDirectory:(Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/lang/String;)Ljava/io/File;
            astore 12 /* snapshotDirectory */
        start local 12 // java.io.File snapshotDirectory
        30: .line 112
            aload 11 /* sstable */
            aload 12 /* snapshotDirectory */
            invokevirtual java.io.File.getPath:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.io.sstable.format.SSTableReader.createLinks:(Ljava/lang/String;)V
        end local 12 // java.io.File snapshotDirectory
        end local 11 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        31: .line 114
            goto 37
        32: .line 115
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 11 /* e */
        start local 11 // java.lang.Exception e
        33: .line 117
            aload 11 /* e */
            invokestatic org.apache.cassandra.utils.JVMStabilityInspector.inspectThrowable:(Ljava/lang/Throwable;)V
        34: .line 118
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error Loading %s: %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 8 /* entry */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            aastore
            dup
            iconst_1
            aload 11 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        35: .line 119
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.debug:Z
            ifeq 37
        36: .line 120
            aload 11 /* e */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
        end local 11 // java.lang.Exception e
        end local 10 // java.util.Set components
        end local 8 // java.util.Map$Entry entry
        37: .line 100
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 23
        38: .line 123
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Pre-scrub sstables snapshotted into snapshot %s"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* snapshotName */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        39: .line 125
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.manifestCheckOnly:Z
            ifne 70
        40: .line 127
            aload 7 /* sstables */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 9
            goto 69
      StackMap locals:
      StackMap stack:
        41: aload 9
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.format.SSTableReader
            astore 8 /* sstable */
        start local 8 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        42: .line 129
            aconst_null
            astore 10
            aconst_null
            astore 11
        43: getstatic org.apache.cassandra.db.compaction.OperationType.SCRUB:Lorg/apache/cassandra/db/compaction/OperationType;
            aload 8 /* sstable */
            invokestatic org.apache.cassandra.db.lifecycle.LifecycleTransaction.offline:(Lorg/apache/cassandra/db/compaction/OperationType;Lorg/apache/cassandra/io/sstable/format/SSTableReader;)Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
            astore 12 /* txn */
        start local 12 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
        44: .line 131
            aload 12 /* txn */
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.obsoleteOriginals:()V
        45: .line 132
            aconst_null
            astore 13
            aconst_null
            astore 14
        46: new org.apache.cassandra.db.compaction.Scrubber
            dup
            aload 3 /* cfs */
            aload 12 /* txn */
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.skipCorrupted:Z
            aload 5 /* handler */
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.noValidate:Z
            ifeq 47
            iconst_0
            goto 48
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List org.apache.cassandra.io.sstable.format.SSTableReader java.util.Iterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.lifecycle.LifecycleTransaction java.lang.Throwable java.lang.Throwable
      StackMap stack: new 46 new 46 org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler
        47: iconst_1
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List org.apache.cassandra.io.sstable.format.SSTableReader java.util.Iterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.lifecycle.LifecycleTransaction java.lang.Throwable java.lang.Throwable
      StackMap stack: new 46 new 46 org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.lifecycle.LifecycleTransaction int org.apache.cassandra.utils.OutputHandler int
        48: aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.reinserOverflowedTTL:Z
            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
            astore 15 /* scrubber */
        start local 15 // org.apache.cassandra.db.compaction.Scrubber scrubber
        49: .line 134
            aload 15 /* scrubber */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.scrub:()V
        50: .line 135
            aload 15 /* scrubber */
            ifnull 60
            aload 15 /* scrubber */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.close:()V
            goto 60
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List org.apache.cassandra.io.sstable.format.SSTableReader java.util.Iterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.lifecycle.LifecycleTransaction java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.compaction.Scrubber
      StackMap stack: java.lang.Throwable
        51: astore 13
            aload 15 /* scrubber */
            ifnull 52
            aload 15 /* scrubber */
            invokevirtual org.apache.cassandra.db.compaction.Scrubber.close:()V
        end local 15 // org.apache.cassandra.db.compaction.Scrubber scrubber
      StackMap locals:
      StackMap stack:
        52: aload 13
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        53: astore 14
            aload 13
            ifnonnull 54
            aload 14
            astore 13
            goto 55
      StackMap locals:
      StackMap stack:
        54: aload 13
            aload 14
            if_acmpeq 55
            aload 13
            aload 14
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        55: aload 13
            athrow
        56: .line 136
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List org.apache.cassandra.io.sstable.format.SSTableReader java.util.Iterator java.lang.Throwable java.lang.Throwable org.apache.cassandra.db.lifecycle.LifecycleTransaction
      StackMap stack: java.lang.Throwable
            astore 13 /* t */
        start local 13 // java.lang.Throwable t
        57: .line 138
            aload 3 /* cfs */
            aload 13 /* t */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.rebuildOnFailedScrub:(Ljava/lang/Throwable;)Z
            ifne 60
        58: .line 140
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            aload 13 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        59: .line 141
            aload 13 /* t */
            athrow
        end local 13 // java.lang.Throwable t
        60: .line 144
      StackMap locals:
      StackMap stack:
            aload 12 /* txn */
            ifnull 69
            aload 12 /* txn */
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.close:()V
            goto 69
      StackMap locals:
      StackMap stack: java.lang.Throwable
        61: astore 10
            aload 12 /* txn */
            ifnull 62
            aload 12 /* txn */
            invokevirtual org.apache.cassandra.db.lifecycle.LifecycleTransaction.close:()V
        end local 12 // org.apache.cassandra.db.lifecycle.LifecycleTransaction txn
      StackMap locals:
      StackMap stack:
        62: aload 10
            athrow
      StackMap locals:
      StackMap stack: java.lang.Throwable
        63: astore 11
            aload 10
            ifnonnull 64
            aload 11
            astore 10
            goto 65
      StackMap locals:
      StackMap stack:
        64: aload 10
            aload 11
            if_acmpeq 65
            aload 10
            aload 11
            invokevirtual java.lang.Throwable.addSuppressed:(Ljava/lang/Throwable;)V
      StackMap locals:
      StackMap stack:
        65: aload 10
            athrow
        66: .line 145
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List org.apache.cassandra.io.sstable.format.SSTableReader java.util.Iterator
      StackMap stack: java.lang.Exception
            astore 10 /* e */
        start local 10 // java.lang.Exception e
        67: .line 147
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            ldc "Error scrubbing %s: %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 8 /* sstable */
            aastore
            dup
            iconst_1
            aload 10 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        68: .line 148
            aload 10 /* e */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
        end local 10 // java.lang.Exception e
        end local 8 // org.apache.cassandra.io.sstable.format.SSTableReader sstable
        69: .line 127
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List top java.util.Iterator
      StackMap stack:
            aload 9
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 41
        70: .line 154
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore java.lang.String org.apache.cassandra.utils.OutputHandler org.apache.cassandra.db.Directories$SSTableLister java.util.List
      StackMap stack:
            aload 3 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getCompactionStrategyManager:()Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;
            aload 3 /* cfs */
            aload 7 /* sstables */
            invokestatic org.apache.cassandra.tools.StandaloneScrubber.checkManifest:(Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection;)V
        71: .line 155
            getstatic org.apache.cassandra.db.compaction.CompactionManager.instance:Lorg/apache/cassandra/db/compaction/CompactionManager;
            ldc 5
            getstatic java.util.concurrent.TimeUnit.MINUTES:Ljava/util/concurrent/TimeUnit;
            invokevirtual org.apache.cassandra.db.compaction.CompactionManager.finishCompactionsAndShutdown:(JLjava/util/concurrent/TimeUnit;)V
        72: .line 156
            invokestatic org.apache.cassandra.db.lifecycle.LifecycleTransaction.waitForDeletions:()V
        73: .line 157
            iconst_0
            invokestatic java.lang.System.exit:(I)V
        end local 7 // java.util.List sstables
        end local 6 // org.apache.cassandra.db.Directories$SSTableLister lister
        end local 5 // org.apache.cassandra.utils.OutputHandler handler
        end local 4 // java.lang.String snapshotName
        end local 3 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 2 // org.apache.cassandra.db.Keyspace keyspace
        74: .line 158
            goto 80
        75: .line 159
      StackMap locals: java.lang.String[] org.apache.cassandra.tools.StandaloneScrubber$Options
      StackMap stack: java.lang.Exception
            astore 2 /* e */
        start local 2 // java.lang.Exception e
        76: .line 161
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            aload 2 /* e */
            invokevirtual java.lang.Exception.getMessage:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        77: .line 162
            aload 1 /* options */
            getfield org.apache.cassandra.tools.StandaloneScrubber$Options.debug:Z
            ifeq 79
        78: .line 163
            aload 2 /* e */
            getstatic java.lang.System.err:Ljava/io/PrintStream;
            invokevirtual java.lang.Exception.printStackTrace:(Ljava/io/PrintStream;)V
        79: .line 164
      StackMap locals: java.lang.Exception
      StackMap stack:
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        end local 2 // java.lang.Exception e
        80: .line 166
      StackMap locals:
      StackMap stack:
            return
        end local 1 // org.apache.cassandra.tools.StandaloneScrubber$Options options
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   81     0               args  [Ljava/lang/String;
            1   81     1            options  Lorg/apache/cassandra/tools/StandaloneScrubber$Options;
            6   74     2           keyspace  Lorg/apache/cassandra/db/Keyspace;
            7   74     3                cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            9   12     4                  c  Lorg/apache/cassandra/db/ColumnFamilyStore;
           19   74     4       snapshotName  Ljava/lang/String;
           20   74     5            handler  Lorg/apache/cassandra/utils/OutputHandler;
           21   74     6             lister  Lorg/apache/cassandra/db/Directories$SSTableLister;
           22   74     7           sstables  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           24   37     8              entry  Ljava/util/Map$Entry<Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Set<Lorg/apache/cassandra/io/sstable/Component;>;>;
           25   37    10         components  Ljava/util/Set<Lorg/apache/cassandra/io/sstable/Component;>;
           28   31    11            sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
           30   31    12  snapshotDirectory  Ljava/io/File;
           33   37    11                  e  Ljava/lang/Exception;
           42   69     8            sstable  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
           44   62    12                txn  Lorg/apache/cassandra/db/lifecycle/LifecycleTransaction;
           49   52    15           scrubber  Lorg/apache/cassandra/db/compaction/Scrubber;
           57   60    13                  t  Ljava/lang/Throwable;
           67   69    10                  e  Ljava/lang/Exception;
           76   80     2                  e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          27    31      32  Class java.lang.Exception
          49    50      51  any
          46    53      53  any
          45    56      56  Class java.lang.Throwable
          44    60      61  any
          43    63      63  any
          42    66      66  Class java.lang.Exception
           2    74      75  Class java.lang.Exception
    MethodParameters:
      Name  Flags
      args  

  private static void checkManifest(org.apache.cassandra.db.compaction.CompactionStrategyManager, org.apache.cassandra.db.ColumnFamilyStore, java.util.Collection<org.apache.cassandra.io.sstable.format.SSTableReader>);
    descriptor: (Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // org.apache.cassandra.db.compaction.CompactionStrategyManager strategyManager
        start local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        start local 2 // java.util.Collection sstables
         0: .line 170
            aload 0 /* strategyManager */
            invokevirtual org.apache.cassandra.db.compaction.CompactionStrategyManager.getCompactionParams:()Lorg/apache/cassandra/schema/CompactionParams;
            invokevirtual org.apache.cassandra.schema.CompactionParams.klass:()Ljava/lang/Class;
            ldc Lorg/apache/cassandra/db/compaction/LeveledCompactionStrategy;
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 18
         1: .line 172
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getCompactionStrategyManager:()Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;
            invokevirtual org.apache.cassandra.db.compaction.CompactionStrategyManager.getMaxSSTableBytes:()J
            ldc 1048576
            ldiv
            l2i
            istore 3 /* maxSizeInMB */
        start local 3 // int maxSizeInMB
         2: .line 174
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "Checking leveled manifest"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 175
            new org.apache.cassandra.tools.StandaloneScrubber$1
            dup
            invokespecial org.apache.cassandra.tools.StandaloneScrubber$1.<init>:()V
            astore 4 /* repairedPredicate */
        start local 4 // com.google.common.base.Predicate repairedPredicate
         4: .line 184
            aload 2 /* sstables */
            aload 4 /* repairedPredicate */
            invokestatic com.google.common.collect.Iterables.filter:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Ljava/lang/Iterable;
            invokestatic com.google.common.collect.Lists.newArrayList:(Ljava/lang/Iterable;)Ljava/util/ArrayList;
            astore 5 /* repaired */
        start local 5 // java.util.List repaired
         5: .line 185
            aload 2 /* sstables */
            aload 4 /* repairedPredicate */
            invokestatic com.google.common.base.Predicates.not:(Lcom/google/common/base/Predicate;)Lcom/google/common/base/Predicate;
            invokestatic com.google.common.collect.Iterables.filter:(Ljava/lang/Iterable;Lcom/google/common/base/Predicate;)Ljava/lang/Iterable;
            invokestatic com.google.common.collect.Lists.newArrayList:(Ljava/lang/Iterable;)Ljava/util/ArrayList;
            astore 6 /* unRepaired */
        start local 6 // java.util.List unRepaired
         6: .line 187
            aload 1 /* cfs */
            iload 3 /* maxSizeInMB */
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getLevelFanoutSize:()I
            aload 5 /* repaired */
            invokestatic org.apache.cassandra.db.compaction.LeveledManifest.create:(Lorg/apache/cassandra/db/ColumnFamilyStore;IILjava/util/List;)Lorg/apache/cassandra/db/compaction/LeveledManifest;
            astore 7 /* repairedManifest */
        start local 7 // org.apache.cassandra.db.compaction.LeveledManifest repairedManifest
         7: .line 188
            iconst_1
            istore 8 /* i */
        start local 8 // int i
         8: goto 11
         9: .line 190
      StackMap locals: org.apache.cassandra.db.compaction.CompactionStrategyManager org.apache.cassandra.db.ColumnFamilyStore java.util.Collection int com.google.common.base.Predicate java.util.List java.util.List org.apache.cassandra.db.compaction.LeveledManifest int
      StackMap stack:
            aload 7 /* repairedManifest */
            iload 8 /* i */
            invokevirtual org.apache.cassandra.db.compaction.LeveledManifest.repairOverlappingSSTables:(I)V
        10: .line 188
            iinc 8 /* i */ 1
      StackMap locals:
      StackMap stack:
        11: iload 8 /* i */
            aload 7 /* repairedManifest */
            invokevirtual org.apache.cassandra.db.compaction.LeveledManifest.getLevelCount:()I
            if_icmplt 9
        end local 8 // int i
        12: .line 192
            aload 1 /* cfs */
            iload 3 /* maxSizeInMB */
            aload 1 /* cfs */
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.getLevelFanoutSize:()I
            aload 6 /* unRepaired */
            invokestatic org.apache.cassandra.db.compaction.LeveledManifest.create:(Lorg/apache/cassandra/db/ColumnFamilyStore;IILjava/util/List;)Lorg/apache/cassandra/db/compaction/LeveledManifest;
            astore 8 /* unRepairedManifest */
        start local 8 // org.apache.cassandra.db.compaction.LeveledManifest unRepairedManifest
        13: .line 193
            iconst_1
            istore 9 /* i */
        start local 9 // int i
        14: goto 17
        15: .line 195
      StackMap locals: org.apache.cassandra.db.compaction.CompactionStrategyManager org.apache.cassandra.db.ColumnFamilyStore java.util.Collection int com.google.common.base.Predicate java.util.List java.util.List org.apache.cassandra.db.compaction.LeveledManifest org.apache.cassandra.db.compaction.LeveledManifest int
      StackMap stack:
            aload 8 /* unRepairedManifest */
            iload 9 /* i */
            invokevirtual org.apache.cassandra.db.compaction.LeveledManifest.repairOverlappingSSTables:(I)V
        16: .line 193
            iinc 9 /* i */ 1
      StackMap locals:
      StackMap stack:
        17: iload 9 /* i */
            aload 8 /* unRepairedManifest */
            invokevirtual org.apache.cassandra.db.compaction.LeveledManifest.getLevelCount:()I
            if_icmplt 15
        end local 9 // int i
        end local 8 // org.apache.cassandra.db.compaction.LeveledManifest unRepairedManifest
        end local 7 // org.apache.cassandra.db.compaction.LeveledManifest repairedManifest
        end local 6 // java.util.List unRepaired
        end local 5 // java.util.List repaired
        end local 4 // com.google.common.base.Predicate repairedPredicate
        end local 3 // int maxSizeInMB
        18: .line 198
      StackMap locals: org.apache.cassandra.db.compaction.CompactionStrategyManager org.apache.cassandra.db.ColumnFamilyStore java.util.Collection
      StackMap stack:
            return
        end local 2 // java.util.Collection sstables
        end local 1 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 0 // org.apache.cassandra.db.compaction.CompactionStrategyManager strategyManager
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   19     0     strategyManager  Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;
            0   19     1                 cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
            0   19     2            sstables  Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            2   18     3         maxSizeInMB  I
            4   18     4   repairedPredicate  Lcom/google/common/base/Predicate<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            5   18     5            repaired  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            6   18     6          unRepaired  Ljava/util/List<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
            7   18     7    repairedManifest  Lorg/apache/cassandra/db/compaction/LeveledManifest;
            8   12     8                   i  I
           13   18     8  unRepairedManifest  Lorg/apache/cassandra/db/compaction/LeveledManifest;
           14   18     9                   i  I
    Signature: (Lorg/apache/cassandra/db/compaction/CompactionStrategyManager;Lorg/apache/cassandra/db/ColumnFamilyStore;Ljava/util/Collection<Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;)V
    MethodParameters:
                 Name  Flags
      strategyManager  
      cfs              
      sstables         
}
SourceFile: "StandaloneScrubber.java"
NestMembers:
  org.apache.cassandra.tools.StandaloneScrubber$1  org.apache.cassandra.tools.StandaloneScrubber$Options
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public final OnTxnErr = org.apache.cassandra.db.Directories$OnTxnErr of org.apache.cassandra.db.Directories
  public SSTableLister = org.apache.cassandra.db.Directories$SSTableLister of org.apache.cassandra.db.Directories
  org.apache.cassandra.tools.StandaloneScrubber$1
  private Options = org.apache.cassandra.tools.StandaloneScrubber$Options of org.apache.cassandra.tools.StandaloneScrubber
  public SystemOutput = org.apache.cassandra.utils.OutputHandler$SystemOutput of org.apache.cassandra.utils.OutputHandler