public class org.apache.cassandra.tools.SSTableOfflineRelevel
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.tools.SSTableOfflineRelevel
  super_class: java.lang.Object
{
  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.tools.SSTableOfflineRelevel this
         0: .line 73
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // org.apache.cassandra.tools.SSTableOfflineRelevel this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/tools/SSTableOfflineRelevel;

  public static void main(java.lang.String[]);
    descriptor: ([Ljava/lang/String;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=7, locals=12, args_size=1
        start local 0 // java.lang.String[] args
         0: .line 80
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            astore 1 /* out */
        start local 1 // java.io.PrintStream out
         1: .line 81
            aload 0 /* args */
            arraylength
            iconst_2
            if_icmpge 5
         2: .line 83
            aload 1 /* out */
            ldc "This command should be run with Cassandra stopped!"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         3: .line 84
            aload 1 /* out */
            ldc "Usage: sstableofflinerelevel [--dry-run] <keyspace> <columnfamily>"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         4: .line 85
            iconst_1
            invokestatic java.lang.System.exit:(I)V
         5: .line 88
      StackMap locals: java.io.PrintStream
      StackMap stack:
            invokestatic org.apache.cassandra.tools.Util.initDatabaseDescriptor:()V
         6: .line 90
            aload 0 /* args */
            iconst_0
            aaload
            ldc "--dry-run"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            istore 2 /* dryRun */
        start local 2 // boolean dryRun
         7: .line 91
            aload 0 /* args */
            aload 0 /* args */
            arraylength
            iconst_2
            isub
            aaload
            astore 3 /* keyspace */
        start local 3 // java.lang.String keyspace
         8: .line 92
            aload 0 /* args */
            aload 0 /* args */
            arraylength
            iconst_1
            isub
            aaload
            astore 4 /* columnfamily */
        start local 4 // java.lang.String columnfamily
         9: .line 93
            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
        10: .line 95
            getstatic org.apache.cassandra.config.Schema.instance:Lorg/apache/cassandra/config/Schema;
            aload 3 /* keyspace */
            aload 4 /* columnfamily */
            invokevirtual org.apache.cassandra.config.Schema.getCFMetaData:(Ljava/lang/String;Ljava/lang/String;)Lorg/apache/cassandra/config/CFMetaData;
            ifnonnull 15
        11: .line 96
            new java.lang.IllegalArgumentException
            dup
            ldc "Unknown keyspace/columnFamily %s.%s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
        12: .line 97
            aload 3 /* keyspace */
            aastore
            dup
            iconst_1
        13: .line 98
            aload 4 /* columnfamily */
            aastore
        14: .line 96
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        15: .line 100
      StackMap locals: int java.lang.String java.lang.String
      StackMap stack:
            aload 3 /* keyspace */
            invokestatic org.apache.cassandra.db.Keyspace.openWithoutSSTables:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            astore 5 /* ks */
        start local 5 // org.apache.cassandra.db.Keyspace ks
        16: .line 101
            aload 5 /* ks */
            aload 4 /* columnfamily */
            invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStore:(Ljava/lang/String;)Lorg/apache/cassandra/db/ColumnFamilyStore;
            astore 6 /* cfs */
        start local 6 // org.apache.cassandra.db.ColumnFamilyStore cfs
        17: .line 102
            aload 6 /* 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 7 /* lister */
        start local 7 // org.apache.cassandra.db.Directories$SSTableLister lister
        18: .line 103
            invokestatic com.google.common.collect.HashMultimap.create:()Lcom/google/common/collect/HashMultimap;
            astore 8 /* sstableMultimap */
        start local 8 // com.google.common.collect.SetMultimap sstableMultimap
        19: .line 104
            aload 7 /* 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 10
            goto 28
      StackMap locals: java.lang.String[] java.io.PrintStream int java.lang.String java.lang.String org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.Directories$SSTableLister com.google.common.collect.SetMultimap top java.util.Iterator
      StackMap stack:
        20: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 9 /* sstable */
        start local 9 // java.util.Map$Entry sstable
        21: .line 106
            aload 9 /* sstable */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            ifnull 28
        22: .line 110
            aload 9 /* sstable */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.Descriptor
            invokestatic org.apache.cassandra.io.sstable.format.SSTableReader.open:(Lorg/apache/cassandra/io/sstable/Descriptor;)Lorg/apache/cassandra/io/sstable/format/SSTableReader;
            astore 11 /* reader */
        start local 11 // org.apache.cassandra.io.sstable.format.SSTableReader reader
        23: .line 111
            aload 8 /* sstableMultimap */
            aload 11 /* reader */
            getfield org.apache.cassandra.io.sstable.format.SSTableReader.descriptor:Lorg/apache/cassandra/io/sstable/Descriptor;
            getfield org.apache.cassandra.io.sstable.Descriptor.directory:Ljava/io/File;
            aload 11 /* reader */
            invokeinterface com.google.common.collect.SetMultimap.put:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        end local 11 // org.apache.cassandra.io.sstable.format.SSTableReader reader
        24: .line 112
            goto 28
        25: .line 113
      StackMap locals: java.lang.String[] java.io.PrintStream int java.lang.String java.lang.String org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.Directories$SSTableLister com.google.common.collect.SetMultimap java.util.Map$Entry java.util.Iterator
      StackMap stack: java.lang.Throwable
            astore 11 /* t */
        start local 11 // java.lang.Throwable t
        26: .line 115
            aload 1 /* out */
            new java.lang.StringBuilder
            dup
            ldc "Couldn't open sstable: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* sstable */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.io.sstable.Descriptor
            getstatic org.apache.cassandra.io.sstable.Component.DATA: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;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        27: .line 116
            aload 11 /* t */
            invokestatic com.google.common.base.Throwables.propagate:(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
            pop
        end local 11 // java.lang.Throwable t
        end local 9 // java.util.Map$Entry sstable
        28: .line 104
      StackMap locals: java.lang.String[] java.io.PrintStream int java.lang.String java.lang.String org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.Directories$SSTableLister com.google.common.collect.SetMultimap top java.util.Iterator
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        29: .line 120
            aload 8 /* sstableMultimap */
            invokeinterface com.google.common.collect.SetMultimap.isEmpty:()Z
            ifeq 32
        30: .line 122
            aload 1 /* out */
            new java.lang.StringBuilder
            dup
            ldc "No sstables to relevel for "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* keyspace */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 4 /* columnfamily */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        31: .line 123
            iconst_1
            invokestatic java.lang.System.exit:(I)V
        32: .line 125
      StackMap locals: java.lang.String[] java.io.PrintStream int java.lang.String java.lang.String org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.Directories$SSTableLister com.google.common.collect.SetMultimap
      StackMap stack:
            aload 8 /* sstableMultimap */
            invokeinterface com.google.common.collect.SetMultimap.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 10
            goto 38
      StackMap locals: java.lang.String[] java.io.PrintStream int java.lang.String java.lang.String org.apache.cassandra.db.Keyspace org.apache.cassandra.db.ColumnFamilyStore org.apache.cassandra.db.Directories$SSTableLister com.google.common.collect.SetMultimap top java.util.Iterator
      StackMap stack:
        33: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.io.File
            astore 9 /* directory */
        start local 9 // java.io.File directory
        34: .line 127
            aload 8 /* sstableMultimap */
            aload 9 /* directory */
            invokeinterface com.google.common.collect.SetMultimap.get:(Ljava/lang/Object;)Ljava/util/Set;
            invokeinterface java.util.Set.isEmpty:()Z
            ifne 38
        35: .line 129
            new org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel
            dup
            aload 8 /* sstableMultimap */
            aload 9 /* directory */
            invokeinterface com.google.common.collect.SetMultimap.get:(Ljava/lang/Object;)Ljava/util/Set;
            invokespecial org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel.<init>:(Ljava/util/Set;)V
            astore 11 /* rl */
        start local 11 // org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel rl
        36: .line 130
            aload 1 /* out */
            new java.lang.StringBuilder
            dup
            ldc "For sstables in "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 9 /* directory */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        37: .line 131
            aload 11 /* rl */
            iload 2 /* dryRun */
            invokevirtual org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel.relevel:(Z)V
        end local 11 // org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel rl
        end local 9 // java.io.File directory
        38: .line 125
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 33
        39: .line 134
            iconst_0
            invokestatic java.lang.System.exit:(I)V
        40: .line 136
            return
        end local 8 // com.google.common.collect.SetMultimap sstableMultimap
        end local 7 // org.apache.cassandra.db.Directories$SSTableLister lister
        end local 6 // org.apache.cassandra.db.ColumnFamilyStore cfs
        end local 5 // org.apache.cassandra.db.Keyspace ks
        end local 4 // java.lang.String columnfamily
        end local 3 // java.lang.String keyspace
        end local 2 // boolean dryRun
        end local 1 // java.io.PrintStream out
        end local 0 // java.lang.String[] args
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   41     0             args  [Ljava/lang/String;
            1   41     1              out  Ljava/io/PrintStream;
            7   41     2           dryRun  Z
            8   41     3         keyspace  Ljava/lang/String;
            9   41     4     columnfamily  Ljava/lang/String;
           16   41     5               ks  Lorg/apache/cassandra/db/Keyspace;
           17   41     6              cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
           18   41     7           lister  Lorg/apache/cassandra/db/Directories$SSTableLister;
           19   41     8  sstableMultimap  Lcom/google/common/collect/SetMultimap<Ljava/io/File;Lorg/apache/cassandra/io/sstable/format/SSTableReader;>;
           21   28     9          sstable  Ljava/util/Map$Entry<Lorg/apache/cassandra/io/sstable/Descriptor;Ljava/util/Set<Lorg/apache/cassandra/io/sstable/Component;>;>;
           23   24    11           reader  Lorg/apache/cassandra/io/sstable/format/SSTableReader;
           26   28    11                t  Ljava/lang/Throwable;
           34   38     9        directory  Ljava/io/File;
           36   38    11               rl  Lorg/apache/cassandra/tools/SSTableOfflineRelevel$Relevel;
      Exception table:
        from    to  target  type
          22    24      25  Class java.lang.Throwable
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      args  
}
SourceFile: "SSTableOfflineRelevel.java"
NestMembers:
  org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel  org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel$1
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
  private Relevel = org.apache.cassandra.tools.SSTableOfflineRelevel$Relevel of org.apache.cassandra.tools.SSTableOfflineRelevel