public class org.apache.cassandra.repair.RepairRunnable extends org.apache.cassandra.utils.WrappedRunnable implements org.apache.cassandra.utils.progress.ProgressEventNotifier
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.repair.RepairRunnable
  super_class: org.apache.cassandra.utils.WrappedRunnable
{
  private static final org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private org.apache.cassandra.service.StorageService storageService;
    descriptor: Lorg/apache/cassandra/service/StorageService;
    flags: (0x0002) ACC_PRIVATE

  private final int cmd;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final org.apache.cassandra.repair.messages.RepairOption options;
    descriptor: Lorg/apache/cassandra/repair/messages/RepairOption;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.lang.String keyspace;
    descriptor: Ljava/lang/String;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final java.util.List<org.apache.cassandra.utils.progress.ProgressListener> listeners;
    descriptor: Ljava/util/List;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/List<Lorg/apache/cassandra/utils/progress/ProgressListener;>;

  private static final java.util.concurrent.atomic.AtomicInteger threadCounter;
    descriptor: Ljava/util/concurrent/atomic/AtomicInteger;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=3, locals=0, args_size=0
         0: .line 68
            ldc Lorg/apache/cassandra/repair/RepairRunnable;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.repair.RepairRunnable.logger:Lorg/slf4j/Logger;
         1: .line 77
            new java.util.concurrent.atomic.AtomicInteger
            dup
            iconst_1
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:(I)V
            putstatic org.apache.cassandra.repair.RepairRunnable.threadCounter:Ljava/util/concurrent/atomic/AtomicInteger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.service.StorageService, int, org.apache.cassandra.repair.messages.RepairOption, java.lang.String);
    descriptor: (Lorg/apache/cassandra/service/StorageService;ILorg/apache/cassandra/repair/messages/RepairOption;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=5
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // org.apache.cassandra.service.StorageService storageService
        start local 2 // int cmd
        start local 3 // org.apache.cassandra.repair.messages.RepairOption options
        start local 4 // java.lang.String keyspace
         0: .line 79
            aload 0 /* this */
            invokespecial org.apache.cassandra.utils.WrappedRunnable.<init>:()V
         1: .line 75
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield org.apache.cassandra.repair.RepairRunnable.listeners:Ljava/util/List;
         2: .line 81
            aload 0 /* this */
            aload 1 /* storageService */
            putfield org.apache.cassandra.repair.RepairRunnable.storageService:Lorg/apache/cassandra/service/StorageService;
         3: .line 82
            aload 0 /* this */
            iload 2 /* cmd */
            putfield org.apache.cassandra.repair.RepairRunnable.cmd:I
         4: .line 83
            aload 0 /* this */
            aload 3 /* options */
            putfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
         5: .line 84
            aload 0 /* this */
            aload 4 /* keyspace */
            putfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
         6: .line 85
            return
        end local 4 // java.lang.String keyspace
        end local 3 // org.apache.cassandra.repair.messages.RepairOption options
        end local 2 // int cmd
        end local 1 // org.apache.cassandra.service.StorageService storageService
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    7     0            this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    7     1  storageService  Lorg/apache/cassandra/service/StorageService;
            0    7     2             cmd  I
            0    7     3         options  Lorg/apache/cassandra/repair/messages/RepairOption;
            0    7     4        keyspace  Ljava/lang/String;
    MethodParameters:
                Name  Flags
      storageService  
      cmd             
      options         
      keyspace        

  public void addProgressListener(org.apache.cassandra.utils.progress.ProgressListener);
    descriptor: (Lorg/apache/cassandra/utils/progress/ProgressListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // org.apache.cassandra.utils.progress.ProgressListener listener
         0: .line 90
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.listeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         1: .line 91
            return
        end local 1 // org.apache.cassandra.utils.progress.ProgressListener listener
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    2     1  listener  Lorg/apache/cassandra/utils/progress/ProgressListener;
    MethodParameters:
          Name  Flags
      listener  

  public void removeProgressListener(org.apache.cassandra.utils.progress.ProgressListener);
    descriptor: (Lorg/apache/cassandra/utils/progress/ProgressListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // org.apache.cassandra.utils.progress.ProgressListener listener
         0: .line 96
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.listeners:Ljava/util/List;
            aload 1 /* listener */
            invokeinterface java.util.List.remove:(Ljava/lang/Object;)Z
            pop
         1: .line 97
            return
        end local 1 // org.apache.cassandra.utils.progress.ProgressListener listener
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    2     1  listener  Lorg/apache/cassandra/utils/progress/ProgressListener;
    MethodParameters:
          Name  Flags
      listener  

  protected void fireProgressEvent(java.lang.String, org.apache.cassandra.utils.progress.ProgressEvent);
    descriptor: (Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // java.lang.String tag
        start local 2 // org.apache.cassandra.utils.progress.ProgressEvent event
         0: .line 101
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.listeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 3
      StackMap locals: org.apache.cassandra.repair.RepairRunnable java.lang.String org.apache.cassandra.utils.progress.ProgressEvent top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.progress.ProgressListener
            astore 3 /* listener */
        start local 3 // org.apache.cassandra.utils.progress.ProgressListener listener
         2: .line 103
            aload 3 /* listener */
            aload 1 /* tag */
            aload 2 /* event */
            invokeinterface org.apache.cassandra.utils.progress.ProgressListener.progress:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
        end local 3 // org.apache.cassandra.utils.progress.ProgressListener listener
         3: .line 101
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 105
            return
        end local 2 // org.apache.cassandra.utils.progress.ProgressEvent event
        end local 1 // java.lang.String tag
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    5     1       tag  Ljava/lang/String;
            0    5     2     event  Lorg/apache/cassandra/utils/progress/ProgressEvent;
            2    3     3  listener  Lorg/apache/cassandra/utils/progress/ProgressListener;
    MethodParameters:
       Name  Flags
      tag    
      event  

  protected void fireErrorAndComplete(java.lang.String, int, int, java.lang.String);
    descriptor: (Ljava/lang/String;IILjava/lang/String;)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=12, locals=5, args_size=5
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // java.lang.String tag
        start local 2 // int progressCount
        start local 3 // int totalProgress
        start local 4 // java.lang.String message
         0: .line 109
            aload 0 /* this */
            aload 1 /* tag */
            new org.apache.cassandra.utils.progress.ProgressEvent
            dup
            getstatic org.apache.cassandra.utils.progress.ProgressEventType.ERROR:Lorg/apache/cassandra/utils/progress/ProgressEventType;
            iload 2 /* progressCount */
            iload 3 /* totalProgress */
            ldc "Repair command #%d failed with error %s"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 4 /* message */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.utils.progress.ProgressEvent.<init>:(Lorg/apache/cassandra/utils/progress/ProgressEventType;IILjava/lang/String;)V
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireProgressEvent:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
         1: .line 110
            aload 0 /* this */
            aload 1 /* tag */
            new org.apache.cassandra.utils.progress.ProgressEvent
            dup
            getstatic org.apache.cassandra.utils.progress.ProgressEventType.COMPLETE:Lorg/apache/cassandra/utils/progress/ProgressEventType;
            iload 2 /* progressCount */
            iload 3 /* totalProgress */
            ldc "Repair command #%d finished with error"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokespecial org.apache.cassandra.utils.progress.ProgressEvent.<init>:(Lorg/apache/cassandra/utils/progress/ProgressEventType;IILjava/lang/String;)V
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireProgressEvent:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
         2: .line 111
            return
        end local 4 // java.lang.String message
        end local 3 // int totalProgress
        end local 2 // int progressCount
        end local 1 // java.lang.String tag
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    3     0           this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    3     1            tag  Ljava/lang/String;
            0    3     2  progressCount  I
            0    3     3  totalProgress  I
            0    3     4        message  Ljava/lang/String;
    MethodParameters:
               Name  Flags
      tag            
      progressCount  
      totalProgress  
      message        

  protected void runMayThrow();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=14, locals=24, args_size=1
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
         0: .line 116
            invokestatic org.apache.cassandra.utils.UUIDGen.getTimeUUID:()Ljava/util/UUID;
            astore 2 /* parentSession */
        start local 2 // java.util.UUID parentSession
         1: .line 117
            new java.lang.StringBuilder
            dup
            ldc "repair:"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* tag */
        start local 3 // java.lang.String tag
         2: .line 119
            new java.util.concurrent.atomic.AtomicInteger
            dup
            invokespecial java.util.concurrent.atomic.AtomicInteger.<init>:()V
            astore 4 /* progress */
        start local 4 // java.util.concurrent.atomic.AtomicInteger progress
         3: .line 120
            iconst_4
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getRanges:()Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            iadd
            istore 5 /* totalProgress */
        start local 5 // int totalProgress
         4: .line 122
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getColumnFamilies:()Ljava/util/Collection;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getColumnFamilies:()Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            anewarray java.lang.String
            invokeinterface java.util.Collection.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast java.lang.String[]
            astore 6 /* columnFamilies */
        start local 6 // java.lang.String[] columnFamilies
         5: .line 126
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.storageService:Lorg/apache/cassandra/service/StorageService;
            iconst_0
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            aload 6 /* columnFamilies */
            invokevirtual org.apache.cassandra.service.StorageService.getValidColumnFamilies:(ZZLjava/lang/String;[Ljava/lang/String;)Ljava/lang/Iterable;
            astore 7 /* validColumnFamilies */
        start local 7 // java.lang.Iterable validColumnFamilies
         6: .line 127
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
         7: .line 128
            goto 12
        end local 7 // java.lang.Iterable validColumnFamilies
         8: .line 129
      StackMap locals: org.apache.cassandra.repair.RepairRunnable top java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[]
      StackMap stack: java.lang.IllegalArgumentException
            astore 8 /* e */
        start local 8 // java.lang.IllegalArgumentException e
         9: .line 131
            getstatic org.apache.cassandra.repair.RepairRunnable.logger:Lorg/slf4j/Logger;
            ldc "Repair failed:"
            aload 8 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        10: .line 132
            aload 0 /* this */
            aload 3 /* tag */
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iload 5 /* totalProgress */
            aload 8 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireErrorAndComplete:(Ljava/lang/String;IILjava/lang/String;)V
        11: .line 133
            return
        end local 8 // java.lang.IllegalArgumentException e
        start local 7 // java.lang.Iterable validColumnFamilies
        12: .line 136
      StackMap locals: java.lang.Iterable
      StackMap stack:
            invokestatic java.lang.System.currentTimeMillis:()J
            lstore 8 /* startTime */
        start local 8 // long startTime
        13: .line 137
            ldc "Starting repair command #%d (%s), repairing keyspace %s with %s"
            iconst_4
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
            aastore
            dup
            iconst_1
            aload 2 /* parentSession */
            aastore
            dup
            iconst_2
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            aastore
            dup
            iconst_3
        14: .line 138
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            aastore
        15: .line 137
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 10 /* message */
        start local 10 // java.lang.String message
        16: .line 139
            getstatic org.apache.cassandra.repair.RepairRunnable.logger:Lorg/slf4j/Logger;
            aload 10 /* message */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;)V
        17: .line 140
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.isTraced:()Z
            ifeq 39
        18: .line 142
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 11 /* cfsb */
        start local 11 // java.lang.StringBuilder cfsb
        19: .line 143
            aload 7 /* validColumnFamilies */
            invokeinterface java.lang.Iterable.iterator:()Ljava/util/Iterator;
            astore 13
            goto 22
      StackMap locals: org.apache.cassandra.repair.RepairRunnable top java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
        20: aload 13
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.db.ColumnFamilyStore
            astore 12 /* cfs */
        start local 12 // org.apache.cassandra.db.ColumnFamilyStore cfs
        21: .line 144
            aload 11 /* cfsb */
            ldc ", "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* cfs */
            getfield org.apache.cassandra.db.ColumnFamilyStore.keyspace:Lorg/apache/cassandra/db/Keyspace;
            invokevirtual org.apache.cassandra.db.Keyspace.getName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* cfs */
            getfield org.apache.cassandra.db.ColumnFamilyStore.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 12 // org.apache.cassandra.db.ColumnFamilyStore cfs
        22: .line 143
      StackMap locals:
      StackMap stack:
            aload 13
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 20
        23: .line 146
            getstatic org.apache.cassandra.tracing.Tracing.instance:Lorg/apache/cassandra/tracing/Tracing;
            getstatic org.apache.cassandra.tracing.Tracing$TraceType.REPAIR:Lorg/apache/cassandra/tracing/Tracing$TraceType;
            invokevirtual org.apache.cassandra.tracing.Tracing.newSession:(Lorg/apache/cassandra/tracing/Tracing$TraceType;)Ljava/util/UUID;
            astore 12 /* sessionId */
        start local 12 // java.util.UUID sessionId
        24: .line 147
            getstatic org.apache.cassandra.tracing.Tracing.instance:Lorg/apache/cassandra/tracing/Tracing;
            ldc "repair"
            ldc "keyspace"
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            ldc "columnFamilies"
        25: .line 148
            aload 11 /* cfsb */
            iconst_2
            invokevirtual java.lang.StringBuilder.substring:(I)Ljava/lang/String;
        26: .line 147
            invokestatic com.google.common.collect.ImmutableMap.of:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap;
            invokevirtual org.apache.cassandra.tracing.Tracing.begin:(Ljava/lang/String;Ljava/util/Map;)Lorg/apache/cassandra/tracing/TraceState;
            astore 1 /* traceState */
        start local 1 // org.apache.cassandra.tracing.TraceState traceState
        27: .line 149
            new java.lang.StringBuilder
            dup
            aload 10 /* message */
            invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            ldc " tracing with "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 12 /* sessionId */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 10 /* message */
        28: .line 150
            aload 0 /* this */
            aload 3 /* tag */
            new org.apache.cassandra.utils.progress.ProgressEvent
            dup
            getstatic org.apache.cassandra.utils.progress.ProgressEventType.START:Lorg/apache/cassandra/utils/progress/ProgressEventType;
            iconst_0
            bipush 100
            aload 10 /* message */
            invokespecial org.apache.cassandra.utils.progress.ProgressEvent.<init>:(Lorg/apache/cassandra/utils/progress/ProgressEventType;IILjava/lang/String;)V
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireProgressEvent:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
        29: .line 151
            aload 10 /* message */
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.cassandra.tracing.Tracing.traceRepair:(Ljava/lang/String;[Ljava/lang/Object;)V
        30: .line 152
            aload 1 /* traceState */
            aload 3 /* tag */
            invokevirtual org.apache.cassandra.tracing.TraceState.enableActivityNotification:(Ljava/lang/String;)V
        31: .line 153
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.listeners:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 14
            goto 34
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.lang.StringBuilder java.util.UUID top java.util.Iterator
      StackMap stack:
        32: aload 14
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.progress.ProgressListener
            astore 13 /* listener */
        start local 13 // org.apache.cassandra.utils.progress.ProgressListener listener
        33: .line 154
            aload 1 /* traceState */
            aload 13 /* listener */
            invokevirtual org.apache.cassandra.tracing.TraceState.addProgressListener:(Lorg/apache/cassandra/utils/progress/ProgressListener;)V
        end local 13 // org.apache.cassandra.utils.progress.ProgressListener listener
        34: .line 153
      StackMap locals:
      StackMap stack:
            aload 14
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 32
        35: .line 155
            aload 0 /* this */
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            aload 12 /* sessionId */
            invokevirtual org.apache.cassandra.repair.RepairRunnable.createQueryThread:(ILjava/util/UUID;)Ljava/lang/Thread;
            astore 13 /* queryThread */
        start local 13 // java.lang.Thread queryThread
        36: .line 156
            aload 13 /* queryThread */
            ldc "RepairTracePolling"
            invokevirtual java.lang.Thread.setName:(Ljava/lang/String;)V
        37: .line 157
            aload 13 /* queryThread */
            invokevirtual java.lang.Thread.start:()V
        end local 13 // java.lang.Thread queryThread
        end local 12 // java.util.UUID sessionId
        end local 11 // java.lang.StringBuilder cfsb
        38: .line 158
            goto 41
        end local 1 // org.apache.cassandra.tracing.TraceState traceState
        39: .line 161
      StackMap locals: org.apache.cassandra.repair.RepairRunnable top java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String
      StackMap stack:
            aload 0 /* this */
            aload 3 /* tag */
            new org.apache.cassandra.utils.progress.ProgressEvent
            dup
            getstatic org.apache.cassandra.utils.progress.ProgressEventType.START:Lorg/apache/cassandra/utils/progress/ProgressEventType;
            iconst_0
            bipush 100
            aload 10 /* message */
            invokespecial org.apache.cassandra.utils.progress.ProgressEvent.<init>:(Lorg/apache/cassandra/utils/progress/ProgressEventType;IILjava/lang/String;)V
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireProgressEvent:(Ljava/lang/String;Lorg/apache/cassandra/utils/progress/ProgressEvent;)V
        40: .line 162
            aconst_null
            astore 1 /* traceState */
        start local 1 // org.apache.cassandra.tracing.TraceState traceState
        41: .line 165
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String
      StackMap stack:
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 11 /* allNeighbors */
        start local 11 // java.util.Set allNeighbors
        42: .line 166
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 12 /* commonRanges */
        start local 12 // java.util.List commonRanges
        43: .line 170
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.storageService:Lorg/apache/cassandra/service/StorageService;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            invokevirtual org.apache.cassandra.service.StorageService.getLocalRanges:(Ljava/lang/String;)Ljava/util/Collection;
            astore 13 /* keyspaceLocalRanges */
        start local 13 // java.util.Collection keyspaceLocalRanges
        44: .line 174
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getRanges:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 15
            goto 52
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection top java.util.Iterator
      StackMap stack:
        45: aload 15
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 14 /* range */
        start local 14 // org.apache.cassandra.dht.Range range
        46: .line 176
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            aload 13 /* keyspaceLocalRanges */
            aload 14 /* range */
        47: .line 177
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getDataCenters:()Ljava/util/Collection;
        48: .line 178
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getHosts:()Ljava/util/Collection;
        49: .line 176
            invokestatic org.apache.cassandra.service.ActiveRepairService.getNeighbors:(Ljava/lang/String;Ljava/util/Collection;Lorg/apache/cassandra/dht/Range;Ljava/util/Collection;Ljava/util/Collection;)Ljava/util/Set;
            astore 16 /* neighbors */
        start local 16 // java.util.Set neighbors
        50: .line 180
            aload 0 /* this */
            aload 12 /* commonRanges */
            aload 14 /* range */
            aload 16 /* neighbors */
            invokevirtual org.apache.cassandra.repair.RepairRunnable.addRangeToNeighbors:(Ljava/util/List;Lorg/apache/cassandra/dht/Range;Ljava/util/Set;)V
        51: .line 181
            aload 11 /* allNeighbors */
            aload 16 /* neighbors */
            invokeinterface java.util.Set.addAll:(Ljava/util/Collection;)Z
            pop
        end local 16 // java.util.Set neighbors
        end local 14 // org.apache.cassandra.dht.Range range
        52: .line 174
      StackMap locals:
      StackMap stack:
            aload 15
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 45
        53: .line 184
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        54: .line 185
            goto 59
        55: .line 186
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection
      StackMap stack: java.lang.IllegalArgumentException
            astore 14 /* e */
        start local 14 // java.lang.IllegalArgumentException e
        56: .line 188
            getstatic org.apache.cassandra.repair.RepairRunnable.logger:Lorg/slf4j/Logger;
            ldc "Repair failed:"
            aload 14 /* e */
            invokeinterface org.slf4j.Logger.error:(Ljava/lang/String;Ljava/lang/Throwable;)V
        57: .line 189
            aload 0 /* this */
            aload 3 /* tag */
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iload 5 /* totalProgress */
            aload 14 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireErrorAndComplete:(Ljava/lang/String;IILjava/lang/String;)V
        58: .line 190
            return
        end local 14 // java.lang.IllegalArgumentException e
        59: .line 194
      StackMap locals:
      StackMap stack:
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 14 /* columnFamilyStores */
        start local 14 // java.util.List columnFamilyStores
        60: .line 197
            aload 14 /* columnFamilyStores */
            aload 7 /* validColumnFamilies */
            invokestatic com.google.common.collect.Iterables.addAll:(Ljava/util/Collection;Ljava/lang/Iterable;)Z
            pop
        61: .line 198
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        62: .line 199
            goto 66
        63: .line 200
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection java.util.List
      StackMap stack: java.lang.IllegalArgumentException
            astore 15 /* e */
        start local 15 // java.lang.IllegalArgumentException e
        64: .line 202
            aload 0 /* this */
            aload 3 /* tag */
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iload 5 /* totalProgress */
            aload 15 /* e */
            invokevirtual java.lang.IllegalArgumentException.getMessage:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireErrorAndComplete:(Ljava/lang/String;IILjava/lang/String;)V
        65: .line 203
            return
        end local 15 // java.lang.IllegalArgumentException e
        66: .line 206
      StackMap locals:
      StackMap stack:
            aload 14 /* columnFamilyStores */
            invokeinterface java.util.List.size:()I
            anewarray java.lang.String
            astore 15 /* cfnames */
        start local 15 // java.lang.String[] cfnames
        67: .line 207
            iconst_0
            istore 16 /* i */
        start local 16 // int i
        68: goto 71
        69: .line 209
      StackMap locals: java.lang.String[] int
      StackMap stack:
            aload 15 /* cfnames */
            iload 16 /* i */
            aload 14 /* columnFamilyStores */
            iload 16 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.db.ColumnFamilyStore
            getfield org.apache.cassandra.db.ColumnFamilyStore.name:Ljava/lang/String;
            aastore
        70: .line 207
            iinc 16 /* i */ 1
      StackMap locals:
      StackMap stack:
        71: iload 16 /* i */
            aload 14 /* columnFamilyStores */
            invokeinterface java.util.List.size:()I
            if_icmplt 69
        end local 16 // int i
        72: .line 212
            aload 2 /* parentSession */
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
            aload 15 /* cfnames */
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokestatic org.apache.cassandra.repair.SystemDistributedKeyspace.startParentRepair:(Ljava/util/UUID;Ljava/lang/String;[Ljava/lang/String;Lorg/apache/cassandra/repair/messages/RepairOption;)V
        73: .line 216
            getstatic org.apache.cassandra.service.ActiveRepairService.instance:Lorg/apache/cassandra/service/ActiveRepairService;
            aload 2 /* parentSession */
            invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
            aload 11 /* allNeighbors */
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            aload 14 /* columnFamilyStores */
            invokevirtual org.apache.cassandra.service.ActiveRepairService.prepareForRepair:(Ljava/util/UUID;Ljava/net/InetAddress;Ljava/util/Set;Lorg/apache/cassandra/repair/messages/RepairOption;Ljava/util/List;)Ljava/util/UUID;
            pop
        74: .line 217
            getstatic org.apache.cassandra.service.ActiveRepairService.instance:Lorg/apache/cassandra/service/ActiveRepairService;
            aload 2 /* parentSession */
            invokevirtual org.apache.cassandra.service.ActiveRepairService.getParentRepairSession:(Ljava/util/UUID;)Lorg/apache/cassandra/service/ActiveRepairService$ParentRepairSession;
            invokevirtual org.apache.cassandra.service.ActiveRepairService$ParentRepairSession.getRepairedAt:()J
            lstore 16 /* repairedAt */
        start local 16 // long repairedAt
        75: .line 218
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            pop
        76: .line 219
            goto 81
        end local 16 // long repairedAt
        77: .line 220
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection java.util.List java.lang.String[]
      StackMap stack: java.lang.Throwable
            astore 18 /* t */
        start local 18 // java.lang.Throwable t
        78: .line 222
            aload 2 /* parentSession */
            aload 18 /* t */
            invokestatic org.apache.cassandra.repair.SystemDistributedKeyspace.failParentRepair:(Ljava/util/UUID;Ljava/lang/Throwable;)V
        79: .line 223
            aload 0 /* this */
            aload 3 /* tag */
            aload 4 /* progress */
            invokevirtual java.util.concurrent.atomic.AtomicInteger.get:()I
            iload 5 /* totalProgress */
            aload 18 /* t */
            invokevirtual java.lang.Throwable.getMessage:()Ljava/lang/String;
            invokevirtual org.apache.cassandra.repair.RepairRunnable.fireErrorAndComplete:(Ljava/lang/String;IILjava/lang/String;)V
        80: .line 224
            return
        end local 18 // java.lang.Throwable t
        start local 16 // long repairedAt
        81: .line 228
      StackMap locals: long
      StackMap stack:
            new org.apache.cassandra.concurrent.JMXConfigurableThreadPoolExecutor
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getJobThreads:()I
        82: .line 229
            ldc 2147483647
        83: .line 230
            getstatic java.util.concurrent.TimeUnit.SECONDS:Ljava/util/concurrent/TimeUnit;
        84: .line 231
            new java.util.concurrent.LinkedBlockingQueue
            dup
            invokespecial java.util.concurrent.LinkedBlockingQueue.<init>:()V
        85: .line 232
            new org.apache.cassandra.concurrent.NamedThreadFactory
            dup
            new java.lang.StringBuilder
            dup
            ldc "Repair#"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.cmd:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial org.apache.cassandra.concurrent.NamedThreadFactory.<init>:(Ljava/lang/String;)V
        86: .line 233
            ldc "internal"
        87: .line 228
            invokespecial org.apache.cassandra.concurrent.JMXConfigurableThreadPoolExecutor.<init>:(IJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Lorg/apache/cassandra/concurrent/NamedThreadFactory;Ljava/lang/String;)V
            invokestatic com.google.common.util.concurrent.MoreExecutors.listeningDecorator:(Ljava/util/concurrent/ExecutorService;)Lcom/google/common/util/concurrent/ListeningExecutorService;
            astore 18 /* executor */
        start local 18 // com.google.common.util.concurrent.ListeningExecutorService executor
        88: .line 235
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getRanges:()Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 19 /* futures */
        start local 19 // java.util.List futures
        89: .line 236
            aload 12 /* commonRanges */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 21
            goto 105
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection java.util.List java.lang.String[] long com.google.common.util.concurrent.ListeningExecutorService java.util.List top java.util.Iterator
      StackMap stack:
        90: aload 21
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 20 /* p */
        start local 20 // org.apache.cassandra.utils.Pair p
        91: .line 238
            getstatic org.apache.cassandra.service.ActiveRepairService.instance:Lorg/apache/cassandra/service/ActiveRepairService;
            aload 2 /* parentSession */
        92: .line 239
            aload 20 /* p */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            checkcast java.util.Collection
        93: .line 240
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.keyspace:Ljava/lang/String;
        94: .line 241
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.getParallelism:()Lorg/apache/cassandra/repair/RepairParallelism;
        95: .line 242
            aload 20 /* p */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.util.Set
        96: .line 243
            lload 16 /* repairedAt */
        97: .line 244
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairRunnable.options:Lorg/apache/cassandra/repair/messages/RepairOption;
            invokevirtual org.apache.cassandra.repair.messages.RepairOption.isPullRepair:()Z
        98: .line 245
            aload 18 /* executor */
        99: .line 246
            aload 15 /* cfnames */
       100: .line 238
            invokevirtual org.apache.cassandra.service.ActiveRepairService.submitRepairSession:(Ljava/util/UUID;Ljava/util/Collection;Ljava/lang/String;Lorg/apache/cassandra/repair/RepairParallelism;Ljava/util/Set;JZLcom/google/common/util/concurrent/ListeningExecutorService;[Ljava/lang/String;)Lorg/apache/cassandra/repair/RepairSession;
            astore 22 /* session */
        start local 22 // org.apache.cassandra.repair.RepairSession session
       101: .line 247
            aload 22 /* session */
            ifnonnull 103
       102: .line 248
            goto 105
       103: .line 250
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection java.util.List java.lang.String[] long com.google.common.util.concurrent.ListeningExecutorService java.util.List org.apache.cassandra.utils.Pair java.util.Iterator org.apache.cassandra.repair.RepairSession
      StackMap stack:
            aload 22 /* session */
            new org.apache.cassandra.repair.RepairRunnable$1
            dup
            aload 0 /* this */
            aload 22 /* session */
            aload 3 /* tag */
            aload 4 /* progress */
            iload 5 /* totalProgress */
            invokespecial org.apache.cassandra.repair.RepairRunnable$1.<init>:(Lorg/apache/cassandra/repair/RepairRunnable;Lorg/apache/cassandra/repair/RepairSession;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;I)V
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;)V
       104: .line 284
            aload 19 /* futures */
            aload 22 /* session */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 22 // org.apache.cassandra.repair.RepairSession session
        end local 20 // org.apache.cassandra.utils.Pair p
       105: .line 236
      StackMap locals: org.apache.cassandra.repair.RepairRunnable org.apache.cassandra.tracing.TraceState java.util.UUID java.lang.String java.util.concurrent.atomic.AtomicInteger int java.lang.String[] java.lang.Iterable long java.lang.String java.util.Set java.util.List java.util.Collection java.util.List java.lang.String[] long com.google.common.util.concurrent.ListeningExecutorService java.util.List top java.util.Iterator
      StackMap stack:
            aload 21
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 90
       106: .line 289
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 20 /* successfulRanges */
        start local 20 // java.util.Collection successfulRanges
       107: .line 290
            new java.util.concurrent.atomic.AtomicBoolean
            dup
            invokespecial java.util.concurrent.atomic.AtomicBoolean.<init>:()V
            astore 21 /* hasFailure */
        start local 21 // java.util.concurrent.atomic.AtomicBoolean hasFailure
       108: .line 291
            aload 19 /* futures */
            invokestatic com.google.common.util.concurrent.Futures.successfulAsList:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 22 /* allSessions */
        start local 22 // com.google.common.util.concurrent.ListenableFuture allSessions
       109: .line 292
            aload 22 /* allSessions */
            new org.apache.cassandra.repair.RepairRunnable$2
            dup
            aload 0 /* this */
            aload 20 /* successfulRanges */
            aload 21 /* hasFailure */
            aload 2 /* parentSession */
            aload 11 /* allNeighbors */
            invokespecial org.apache.cassandra.repair.RepairRunnable$2.<init>:(Lorg/apache/cassandra/repair/RepairRunnable;Ljava/util/Collection;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/UUID;Ljava/util/Set;)V
            invokestatic com.google.common.util.concurrent.Futures.transform:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/AsyncFunction;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 23 /* anticompactionResult */
        start local 23 // com.google.common.util.concurrent.ListenableFuture anticompactionResult
       110: .line 312
            aload 23 /* anticompactionResult */
            new org.apache.cassandra.repair.RepairRunnable$3
            dup
            aload 0 /* this */
            aload 2 /* parentSession */
            aload 20 /* successfulRanges */
            aload 21 /* hasFailure */
            aload 3 /* tag */
            aload 4 /* progress */
            iload 5 /* totalProgress */
            lload 8 /* startTime */
            aload 1 /* traceState */
            aload 18 /* executor */
            invokespecial org.apache.cassandra.repair.RepairRunnable$3.<init>:(Lorg/apache/cassandra/repair/RepairRunnable;Ljava/util/UUID;Ljava/util/Collection;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;IJLorg/apache/cassandra/tracing/TraceState;Lcom/google/common/util/concurrent/ListeningExecutorService;)V
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;)V
       111: .line 360
            return
        end local 23 // com.google.common.util.concurrent.ListenableFuture anticompactionResult
        end local 22 // com.google.common.util.concurrent.ListenableFuture allSessions
        end local 21 // java.util.concurrent.atomic.AtomicBoolean hasFailure
        end local 20 // java.util.Collection successfulRanges
        end local 19 // java.util.List futures
        end local 18 // com.google.common.util.concurrent.ListeningExecutorService executor
        end local 16 // long repairedAt
        end local 15 // java.lang.String[] cfnames
        end local 14 // java.util.List columnFamilyStores
        end local 13 // java.util.Collection keyspaceLocalRanges
        end local 12 // java.util.List commonRanges
        end local 11 // java.util.Set allNeighbors
        end local 10 // java.lang.String message
        end local 8 // long startTime
        end local 7 // java.lang.Iterable validColumnFamilies
        end local 6 // java.lang.String[] columnFamilies
        end local 5 // int totalProgress
        end local 4 // java.util.concurrent.atomic.AtomicInteger progress
        end local 3 // java.lang.String tag
        end local 2 // java.util.UUID parentSession
        end local 1 // org.apache.cassandra.tracing.TraceState traceState
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0  112     0                  this  Lorg/apache/cassandra/repair/RepairRunnable;
           27   39     1            traceState  Lorg/apache/cassandra/tracing/TraceState;
           41  112     1            traceState  Lorg/apache/cassandra/tracing/TraceState;
            1  112     2         parentSession  Ljava/util/UUID;
            2  112     3                   tag  Ljava/lang/String;
            3  112     4              progress  Ljava/util/concurrent/atomic/AtomicInteger;
            4  112     5         totalProgress  I
            5  112     6        columnFamilies  [Ljava/lang/String;
            6    8     7   validColumnFamilies  Ljava/lang/Iterable<Lorg/apache/cassandra/db/ColumnFamilyStore;>;
           12  112     7   validColumnFamilies  Ljava/lang/Iterable<Lorg/apache/cassandra/db/ColumnFamilyStore;>;
            9   12     8                     e  Ljava/lang/IllegalArgumentException;
           13  112     8             startTime  J
           16  112    10               message  Ljava/lang/String;
           19   38    11                  cfsb  Ljava/lang/StringBuilder;
           21   22    12                   cfs  Lorg/apache/cassandra/db/ColumnFamilyStore;
           24   38    12             sessionId  Ljava/util/UUID;
           33   34    13              listener  Lorg/apache/cassandra/utils/progress/ProgressListener;
           36   38    13           queryThread  Ljava/lang/Thread;
           42  112    11          allNeighbors  Ljava/util/Set<Ljava/net/InetAddress;>;
           43  112    12          commonRanges  Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Ljava/util/Set<Ljava/net/InetAddress;>;+Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;>;>;
           44  112    13   keyspaceLocalRanges  Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
           46   52    14                 range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
           50   52    16             neighbors  Ljava/util/Set<Ljava/net/InetAddress;>;
           56   59    14                     e  Ljava/lang/IllegalArgumentException;
           60  112    14    columnFamilyStores  Ljava/util/List<Lorg/apache/cassandra/db/ColumnFamilyStore;>;
           64   66    15                     e  Ljava/lang/IllegalArgumentException;
           67  112    15               cfnames  [Ljava/lang/String;
           68   72    16                     i  I
           75   77    16            repairedAt  J
           81  112    16            repairedAt  J
           78   81    18                     t  Ljava/lang/Throwable;
           88  112    18              executor  Lcom/google/common/util/concurrent/ListeningExecutorService;
           89  112    19               futures  Ljava/util/List<Lcom/google/common/util/concurrent/ListenableFuture<Lorg/apache/cassandra/repair/RepairSessionResult;>;>;
           91  105    20                     p  Lorg/apache/cassandra/utils/Pair<Ljava/util/Set<Ljava/net/InetAddress;>;+Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;>;
          101  105    22               session  Lorg/apache/cassandra/repair/RepairSession;
          107  112    20      successfulRanges  Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
          108  112    21            hasFailure  Ljava/util/concurrent/atomic/AtomicBoolean;
          109  112    22           allSessions  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/RepairSessionResult;>;>;
          110  112    23  anticompactionResult  Lcom/google/common/util/concurrent/ListenableFuture;
      Exception table:
        from    to  target  type
           5     7       8  Class java.lang.IllegalArgumentException
          44    54      55  Class java.lang.IllegalArgumentException
          60    62      63  Class java.lang.IllegalArgumentException
          73    76      77  Class java.lang.Throwable
    Exceptions:
      throws java.lang.Exception

  private void addRangeToNeighbors(java.util.List<org.apache.cassandra.utils.Pair<java.util.Set<java.net.InetAddress>, ? extends java.util.Collection<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>>>>, org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>, java.util.Set<java.net.InetAddress>);
    descriptor: (Ljava/util/List;Lorg/apache/cassandra/dht/Range;Ljava/util/Set;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=6, args_size=4
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // java.util.List neighborRangeList
        start local 2 // org.apache.cassandra.dht.Range range
        start local 3 // java.util.Set neighbors
         0: .line 364
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         1: goto 7
         2: .line 366
      StackMap locals: int
      StackMap stack:
            aload 1 /* neighborRangeList */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.Pair
            astore 5 /* p */
        start local 5 // org.apache.cassandra.utils.Pair p
         3: .line 368
            aload 5 /* p */
            getfield org.apache.cassandra.utils.Pair.left:Ljava/lang/Object;
            checkcast java.util.Set
            aload 3 /* neighbors */
            invokeinterface java.util.Set.containsAll:(Ljava/util/Collection;)Z
            ifeq 6
         4: .line 370
            aload 5 /* p */
            getfield org.apache.cassandra.utils.Pair.right:Ljava/lang/Object;
            checkcast java.util.Collection
            aload 2 /* range */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
         5: .line 371
            return
        end local 5 // org.apache.cassandra.utils.Pair p
         6: .line 364
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 4 /* i */
            aload 1 /* neighborRangeList */
            invokeinterface java.util.List.size:()I
            if_icmplt 2
        end local 4 // int i
         8: .line 375
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* ranges */
        start local 4 // java.util.List ranges
         9: .line 376
            aload 4 /* ranges */
            aload 2 /* range */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        10: .line 377
            aload 1 /* neighborRangeList */
            aload 3 /* neighbors */
            aload 4 /* ranges */
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 378
            return
        end local 4 // java.util.List ranges
        end local 3 // java.util.Set neighbors
        end local 2 // org.apache.cassandra.dht.Range range
        end local 1 // java.util.List neighborRangeList
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Lorg/apache/cassandra/repair/RepairRunnable;
            0   12     1  neighborRangeList  Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Ljava/util/Set<Ljava/net/InetAddress;>;+Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;>;>;
            0   12     2              range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
            0   12     3          neighbors  Ljava/util/Set<Ljava/net/InetAddress;>;
            1    8     4                  i  I
            3    6     5                  p  Lorg/apache/cassandra/utils/Pair<Ljava/util/Set<Ljava/net/InetAddress;>;+Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;>;
            9   12     4             ranges  Ljava/util/List<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
    Signature: (Ljava/util/List<Lorg/apache/cassandra/utils/Pair<Ljava/util/Set<Ljava/net/InetAddress;>;+Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;>;>;Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;Ljava/util/Set<Ljava/net/InetAddress;>;)V
    MethodParameters:
                   Name  Flags
      neighborRangeList  
      range              
      neighbors          

  private java.lang.Thread createQueryThread(int, java.util.UUID);
    descriptor: (ILjava/util/UUID;)Ljava/lang/Thread;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.repair.RepairRunnable this
        start local 1 // int cmd
        start local 2 // java.util.UUID sessionId
         0: .line 382
            new org.apache.cassandra.repair.RepairRunnable$4
            dup
            aload 0 /* this */
            aload 2 /* sessionId */
            iload 1 /* cmd */
            invokespecial org.apache.cassandra.repair.RepairRunnable$4.<init>:(Lorg/apache/cassandra/repair/RepairRunnable;Ljava/util/UUID;I)V
         1: .line 449
            new java.lang.StringBuilder
            dup
            ldc "Repair-Runnable-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic org.apache.cassandra.repair.RepairRunnable.threadCounter:Ljava/util/concurrent/atomic/AtomicInteger;
            invokevirtual java.util.concurrent.atomic.AtomicInteger.incrementAndGet:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         2: .line 382
            invokestatic org.apache.cassandra.concurrent.NamedThreadFactory.createThread:(Ljava/lang/Runnable;Ljava/lang/String;)Ljava/lang/Thread;
            areturn
        end local 2 // java.util.UUID sessionId
        end local 1 // int cmd
        end local 0 // org.apache.cassandra.repair.RepairRunnable this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/apache/cassandra/repair/RepairRunnable;
            0    3     1        cmd  I
            0    3     2  sessionId  Ljava/util/UUID;
    MethodParameters:
           Name  Flags
      cmd        final
      sessionId  final
}
SourceFile: "RepairRunnable.java"
NestMembers:
  org.apache.cassandra.repair.RepairRunnable$1  org.apache.cassandra.repair.RepairRunnable$2  org.apache.cassandra.repair.RepairRunnable$3  org.apache.cassandra.repair.RepairRunnable$4
InnerClasses:
  org.apache.cassandra.repair.RepairRunnable$1
  org.apache.cassandra.repair.RepairRunnable$2
  org.apache.cassandra.repair.RepairRunnable$3
  org.apache.cassandra.repair.RepairRunnable$4
  public ParentRepairSession = org.apache.cassandra.service.ActiveRepairService$ParentRepairSession of org.apache.cassandra.service.ActiveRepairService
  public final TraceType = org.apache.cassandra.tracing.Tracing$TraceType of org.apache.cassandra.tracing.Tracing