public class org.apache.cassandra.repair.RepairJob extends com.google.common.util.concurrent.AbstractFuture<org.apache.cassandra.repair.RepairResult> implements java.lang.Runnable
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.repair.RepairJob
  super_class: com.google.common.util.concurrent.AbstractFuture
{
  private static org.slf4j.Logger logger;
    descriptor: Lorg/slf4j/Logger;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC

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

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

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

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

  private final com.google.common.util.concurrent.ListeningExecutorService taskExecutor;
    descriptor: Lcom/google/common/util/concurrent/ListeningExecutorService;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 42
            ldc Lorg/apache/cassandra/repair/RepairJob;
            invokestatic org.slf4j.LoggerFactory.getLogger:(Ljava/lang/Class;)Lorg/slf4j/Logger;
            putstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.repair.RepairSession, java.lang.String);
    descriptor: (Lorg/apache/cassandra/repair/RepairSession;Ljava/lang/String;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=3, args_size=3
        start local 0 // org.apache.cassandra.repair.RepairJob this
        start local 1 // org.apache.cassandra.repair.RepairSession session
        start local 2 // java.lang.String columnFamily
         0: .line 56
            aload 0 /* this */
            invokespecial com.google.common.util.concurrent.AbstractFuture.<init>:()V
         1: .line 58
            aload 0 /* this */
            aload 1 /* session */
            putfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
         2: .line 59
            aload 0 /* this */
            new org.apache.cassandra.repair.RepairJobDesc
            dup
            aload 1 /* session */
            getfield org.apache.cassandra.repair.RepairSession.parentRepairSession:Ljava/util/UUID;
            aload 1 /* session */
            invokevirtual org.apache.cassandra.repair.RepairSession.getId:()Ljava/util/UUID;
            aload 1 /* session */
            getfield org.apache.cassandra.repair.RepairSession.keyspace:Ljava/lang/String;
            aload 2 /* columnFamily */
            aload 1 /* session */
            invokevirtual org.apache.cassandra.repair.RepairSession.getRanges:()Ljava/util/Collection;
            invokespecial org.apache.cassandra.repair.RepairJobDesc.<init>:(Ljava/util/UUID;Ljava/util/UUID;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
            putfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
         3: .line 60
            aload 0 /* this */
            aload 1 /* session */
            getfield org.apache.cassandra.repair.RepairSession.repairedAt:J
            putfield org.apache.cassandra.repair.RepairJob.repairedAt:J
         4: .line 61
            aload 0 /* this */
            aload 1 /* session */
            getfield org.apache.cassandra.repair.RepairSession.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            putfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
         5: .line 62
            aload 0 /* this */
            aload 1 /* session */
            getfield org.apache.cassandra.repair.RepairSession.parallelismDegree:Lorg/apache/cassandra/repair/RepairParallelism;
            putfield org.apache.cassandra.repair.RepairJob.parallelismDegree:Lorg/apache/cassandra/repair/RepairParallelism;
         6: .line 63
            return
        end local 2 // java.lang.String columnFamily
        end local 1 // org.apache.cassandra.repair.RepairSession session
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0          this  Lorg/apache/cassandra/repair/RepairJob;
            0    7     1       session  Lorg/apache/cassandra/repair/RepairSession;
            0    7     2  columnFamily  Ljava/lang/String;
    MethodParameters:
              Name  Flags
      session       
      columnFamily  

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=7, args_size=1
        start local 0 // org.apache.cassandra.repair.RepairJob this
         0: .line 73
            new java.util.ArrayList
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            getfield org.apache.cassandra.repair.RepairSession.endpoints:Ljava/util/Set;
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            astore 1 /* allEndpoints */
        start local 1 // java.util.List allEndpoints
         1: .line 74
            aload 1 /* allEndpoints */
            invokestatic org.apache.cassandra.utils.FBUtilities.getBroadcastAddress:()Ljava/net/InetAddress;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         2: .line 78
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.parallelismDegree:Lorg/apache/cassandra/repair/RepairParallelism;
            getstatic org.apache.cassandra.repair.RepairParallelism.PARALLEL:Lorg/apache/cassandra/repair/RepairParallelism;
            if_acmpeq 15
         3: .line 81
            new java.util.ArrayList
            dup
            aload 1 /* allEndpoints */
            invokeinterface java.util.List.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 3 /* snapshotTasks */
        start local 3 // java.util.List snapshotTasks
         4: .line 82
            aload 1 /* allEndpoints */
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 5
            goto 9
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.List top java.util.List top java.util.Iterator
      StackMap stack:
         5: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 4 /* endpoint */
        start local 4 // java.net.InetAddress endpoint
         6: .line 84
            new org.apache.cassandra.repair.SnapshotTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 4 /* endpoint */
            invokespecial org.apache.cassandra.repair.SnapshotTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;)V
            astore 6 /* snapshotTask */
        start local 6 // org.apache.cassandra.repair.SnapshotTask snapshotTask
         7: .line 85
            aload 3 /* snapshotTasks */
            aload 6 /* snapshotTask */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 86
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            aload 6 /* snapshotTask */
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.execute:(Ljava/lang/Runnable;)V
        end local 6 // org.apache.cassandra.repair.SnapshotTask snapshotTask
        end local 4 // java.net.InetAddress endpoint
         9: .line 82
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        10: .line 89
            aload 3 /* snapshotTasks */
            invokestatic com.google.common.util.concurrent.Futures.allAsList:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 4 /* allSnapshotTasks */
        start local 4 // com.google.common.util.concurrent.ListenableFuture allSnapshotTasks
        11: .line 90
            aload 4 /* allSnapshotTasks */
            new org.apache.cassandra.repair.RepairJob$1
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.repair.RepairJob$1.<init>:(Lorg/apache/cassandra/repair/RepairJob;)V
        12: .line 99
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
        13: .line 90
            invokestatic com.google.common.util.concurrent.Futures.transform:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/AsyncFunction;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 2 /* validations */
        end local 4 // com.google.common.util.concurrent.ListenableFuture allSnapshotTasks
        end local 3 // java.util.List snapshotTasks
        start local 2 // com.google.common.util.concurrent.ListenableFuture validations
        14: .line 100
            goto 16
        end local 2 // com.google.common.util.concurrent.ListenableFuture validations
        15: .line 104
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.List
      StackMap stack:
            aload 0 /* this */
            aload 1 /* allEndpoints */
            invokevirtual org.apache.cassandra.repair.RepairJob.sendValidationRequest:(Ljava/util/Collection;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 2 /* validations */
        start local 2 // com.google.common.util.concurrent.ListenableFuture validations
        16: .line 108
      StackMap locals: com.google.common.util.concurrent.ListenableFuture
      StackMap stack:
            aload 2 /* validations */
            new org.apache.cassandra.repair.RepairJob$2
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.repair.RepairJob$2.<init>:(Lorg/apache/cassandra/repair/RepairJob;)V
        17: .line 114
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
        18: .line 108
            invokestatic com.google.common.util.concurrent.Futures.transform:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/AsyncFunction;Ljava/util/concurrent/Executor;)Lcom/google/common/util/concurrent/ListenableFuture;
            astore 3 /* syncResults */
        start local 3 // com.google.common.util.concurrent.ListenableFuture syncResults
        19: .line 117
            aload 3 /* syncResults */
            new org.apache.cassandra.repair.RepairJob$3
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.repair.RepairJob$3.<init>:(Lorg/apache/cassandra/repair/RepairJob;)V
        20: .line 135
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
        21: .line 117
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;Ljava/util/concurrent/Executor;)V
        22: .line 138
            aload 2 /* validations */
            invokestatic com.google.common.util.concurrent.Futures.getUnchecked:(Ljava/util/concurrent/Future;)Ljava/lang/Object;
            pop
        23: .line 139
            return
        end local 3 // com.google.common.util.concurrent.ListenableFuture syncResults
        end local 2 // com.google.common.util.concurrent.ListenableFuture validations
        end local 1 // java.util.List allEndpoints
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   24     0              this  Lorg/apache/cassandra/repair/RepairJob;
            1   24     1      allEndpoints  Ljava/util/List<Ljava/net/InetAddress;>;
           14   15     2       validations  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;>;
           16   24     2       validations  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;>;
            4   14     3     snapshotTasks  Ljava/util/List<Lcom/google/common/util/concurrent/ListenableFuture<Ljava/net/InetAddress;>;>;
            6    9     4          endpoint  Ljava/net/InetAddress;
            7    9     6      snapshotTask  Lorg/apache/cassandra/repair/SnapshotTask;
           11   14     4  allSnapshotTasks  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Ljava/net/InetAddress;>;>;
           19   24     3       syncResults  Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/SyncStat;>;>;

  java.util.List<org.apache.cassandra.repair.SyncTask> createSyncTasks(java.util.List<org.apache.cassandra.repair.TreeResponse>, java.net.InetAddress);
    descriptor: (Ljava/util/List;Ljava/net/InetAddress;)Ljava/util/List;
    flags: (0x0000) 
    Code:
      stack=9, locals=10, args_size=3
        start local 0 // org.apache.cassandra.repair.RepairJob this
        start local 1 // java.util.List trees
        start local 2 // java.net.InetAddress local
         0: .line 144
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 3 /* syncTasks */
        start local 3 // java.util.List syncTasks
         1: .line 146
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         2: goto 18
         3: .line 148
      StackMap locals: java.util.List int
      StackMap stack:
            aload 1 /* trees */
            iload 4 /* i */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.repair.TreeResponse
            astore 5 /* r1 */
        start local 5 // org.apache.cassandra.repair.TreeResponse r1
         4: .line 149
            iload 4 /* i */
            iconst_1
            iadd
            istore 6 /* j */
        start local 6 // int j
         5: goto 16
         6: .line 151
      StackMap locals: org.apache.cassandra.repair.TreeResponse int
      StackMap stack:
            aload 1 /* trees */
            iload 6 /* j */
            invokeinterface java.util.List.get:(I)Ljava/lang/Object;
            checkcast org.apache.cassandra.repair.TreeResponse
            astore 7 /* r2 */
        start local 7 // org.apache.cassandra.repair.TreeResponse r2
         7: .line 154
            aload 5 /* r1 */
            getfield org.apache.cassandra.repair.TreeResponse.trees:Lorg/apache/cassandra/utils/MerkleTrees;
            aload 7 /* r2 */
            getfield org.apache.cassandra.repair.TreeResponse.trees:Lorg/apache/cassandra/utils/MerkleTrees;
            invokestatic org.apache.cassandra.utils.MerkleTrees.difference:(Lorg/apache/cassandra/utils/MerkleTrees;Lorg/apache/cassandra/utils/MerkleTrees;)Ljava/util/List;
            astore 9 /* differences */
        start local 9 // java.util.List differences
         8: .line 156
            aload 5 /* r1 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 2 /* local */
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifne 9
            aload 7 /* r2 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 2 /* local */
            invokevirtual java.net.InetAddress.equals:(Ljava/lang/Object;)Z
            ifeq 11
         9: .line 158
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.List java.net.InetAddress java.util.List int org.apache.cassandra.repair.TreeResponse int org.apache.cassandra.repair.TreeResponse top java.util.List
      StackMap stack:
            new org.apache.cassandra.repair.LocalSyncTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 5 /* r1 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 7 /* r2 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 9 /* differences */
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.repairedAt:J
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            getfield org.apache.cassandra.repair.RepairSession.pullRepair:Z
            invokespecial org.apache.cassandra.repair.LocalSyncTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;Ljava/net/InetAddress;Ljava/util/List;JZ)V
            astore 8 /* task */
        start local 8 // org.apache.cassandra.repair.SyncTask task
        10: .line 159
            goto 13
        end local 8 // org.apache.cassandra.repair.SyncTask task
        11: .line 162
      StackMap locals:
      StackMap stack:
            new org.apache.cassandra.repair.RemoteSyncTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 5 /* r1 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 7 /* r2 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 9 /* differences */
            invokespecial org.apache.cassandra.repair.RemoteSyncTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;Ljava/net/InetAddress;Ljava/util/List;)V
            astore 8 /* task */
        start local 8 // org.apache.cassandra.repair.SyncTask task
        12: .line 165
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            new org.apache.cassandra.repair.NodePair
            dup
            aload 5 /* r1 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            aload 7 /* r2 */
            getfield org.apache.cassandra.repair.TreeResponse.endpoint:Ljava/net/InetAddress;
            invokespecial org.apache.cassandra.repair.NodePair.<init>:(Ljava/net/InetAddress;Ljava/net/InetAddress;)V
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            aload 8 /* task */
            checkcast org.apache.cassandra.repair.RemoteSyncTask
            invokevirtual org.apache.cassandra.repair.RepairSession.waitForSync:(Lorg/apache/cassandra/utils/Pair;Lorg/apache/cassandra/repair/RemoteSyncTask;)V
        13: .line 167
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.List java.net.InetAddress java.util.List int org.apache.cassandra.repair.TreeResponse int org.apache.cassandra.repair.TreeResponse org.apache.cassandra.repair.SyncTask java.util.List
      StackMap stack:
            aload 3 /* syncTasks */
            aload 8 /* task */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        14: .line 168
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            aload 8 /* task */
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.submit:(Ljava/lang/Runnable;)Lcom/google/common/util/concurrent/ListenableFuture;
            pop
        end local 9 // java.util.List differences
        end local 8 // org.apache.cassandra.repair.SyncTask task
        end local 7 // org.apache.cassandra.repair.TreeResponse r2
        15: .line 149
            iinc 6 /* j */ 1
      StackMap locals:
      StackMap stack:
        16: iload 6 /* j */
            aload 1 /* trees */
            invokeinterface java.util.List.size:()I
            if_icmplt 6
        end local 6 // int j
        end local 5 // org.apache.cassandra.repair.TreeResponse r1
        17: .line 146
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        18: iload 4 /* i */
            aload 1 /* trees */
            invokeinterface java.util.List.size:()I
            iconst_1
            isub
            if_icmplt 3
        end local 4 // int i
        19: .line 171
            aload 3 /* syncTasks */
            areturn
        end local 3 // java.util.List syncTasks
        end local 2 // java.net.InetAddress local
        end local 1 // java.util.List trees
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   20     0         this  Lorg/apache/cassandra/repair/RepairJob;
            0   20     1        trees  Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;
            0   20     2        local  Ljava/net/InetAddress;
            1   20     3    syncTasks  Ljava/util/List<Lorg/apache/cassandra/repair/SyncTask;>;
            2   19     4            i  I
            4   17     5           r1  Lorg/apache/cassandra/repair/TreeResponse;
            5   17     6            j  I
            7   15     7           r2  Lorg/apache/cassandra/repair/TreeResponse;
           10   11     8         task  Lorg/apache/cassandra/repair/SyncTask;
           12   15     8         task  Lorg/apache/cassandra/repair/SyncTask;
            8   15     9  differences  Ljava/util/List<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
    Signature: (Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;Ljava/net/InetAddress;)Ljava/util/List<Lorg/apache/cassandra/repair/SyncTask;>;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      trees  
      local  

  private com.google.common.util.concurrent.ListenableFuture<java.util.List<org.apache.cassandra.repair.TreeResponse>> sendValidationRequest(java.util.Collection<java.net.InetAddress>);
    descriptor: (Ljava/util/Collection;)Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=2
        start local 0 // org.apache.cassandra.repair.RepairJob this
        start local 1 // java.util.Collection endpoints
         0: .line 182
            ldc "Requesting merkle trees for %s (to %s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* endpoints */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         1: .line 183
            getstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            ldc "[repair #{}] {}"
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.sessionId:Ljava/util/UUID;
            aload 2 /* message */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 184
            aload 2 /* message */
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.cassandra.tracing.Tracing.traceRepair:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 185
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.keyspace:Ljava/lang/String;
            invokestatic org.apache.cassandra.db.Keyspace.open:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStore:(Ljava/lang/String;)Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokestatic org.apache.cassandra.utils.FBUtilities.nowInSeconds:()I
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.gcBefore:(I)I
            istore 3 /* gcBefore */
        start local 3 // int gcBefore
         4: .line 186
            new java.util.ArrayList
            dup
            aload 1 /* endpoints */
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 4 /* tasks */
        start local 4 // java.util.List tasks
         5: .line 187
            aload 1 /* endpoints */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 6
            goto 11
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List top java.util.Iterator
      StackMap stack:
         6: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 5 /* endpoint */
        start local 5 // java.net.InetAddress endpoint
         7: .line 189
            new org.apache.cassandra.repair.ValidationTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 5 /* endpoint */
            iload 3 /* gcBefore */
            invokespecial org.apache.cassandra.repair.ValidationTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;I)V
            astore 7 /* task */
        start local 7 // org.apache.cassandra.repair.ValidationTask task
         8: .line 190
            aload 4 /* tasks */
            aload 7 /* task */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         9: .line 191
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 5 /* endpoint */
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            aload 7 /* task */
            invokevirtual org.apache.cassandra.repair.RepairSession.waitForValidation:(Lorg/apache/cassandra/utils/Pair;Lorg/apache/cassandra/repair/ValidationTask;)V
        10: .line 192
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            aload 7 /* task */
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.execute:(Ljava/lang/Runnable;)V
        end local 7 // org.apache.cassandra.repair.ValidationTask task
        end local 5 // java.net.InetAddress endpoint
        11: .line 187
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 6
        12: .line 194
            aload 4 /* tasks */
            invokestatic com.google.common.util.concurrent.Futures.allAsList:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/ListenableFuture;
            areturn
        end local 4 // java.util.List tasks
        end local 3 // int gcBefore
        end local 2 // java.lang.String message
        end local 1 // java.util.Collection endpoints
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   13     0       this  Lorg/apache/cassandra/repair/RepairJob;
            0   13     1  endpoints  Ljava/util/Collection<Ljava/net/InetAddress;>;
            1   13     2    message  Ljava/lang/String;
            4   13     3   gcBefore  I
            5   13     4      tasks  Ljava/util/List<Lcom/google/common/util/concurrent/ListenableFuture<Lorg/apache/cassandra/repair/TreeResponse;>;>;
            7   11     5   endpoint  Ljava/net/InetAddress;
            8   11     7       task  Lorg/apache/cassandra/repair/ValidationTask;
    Signature: (Ljava/util/Collection<Ljava/net/InetAddress;>;)Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;>;
    MethodParameters:
           Name  Flags
      endpoints  

  private com.google.common.util.concurrent.ListenableFuture<java.util.List<org.apache.cassandra.repair.TreeResponse>> sendSequentialValidationRequest(java.util.Collection<java.net.InetAddress>);
    descriptor: (Ljava/util/Collection;)Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=11, args_size=2
        start local 0 // org.apache.cassandra.repair.RepairJob this
        start local 1 // java.util.Collection endpoints
         0: .line 202
            ldc "Requesting merkle trees for %s (to %s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* endpoints */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         1: .line 203
            getstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            ldc "[repair #{}] {}"
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.sessionId:Ljava/util/UUID;
            aload 2 /* message */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 204
            aload 2 /* message */
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.cassandra.tracing.Tracing.traceRepair:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 205
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.keyspace:Ljava/lang/String;
            invokestatic org.apache.cassandra.db.Keyspace.open:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStore:(Ljava/lang/String;)Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokestatic org.apache.cassandra.utils.FBUtilities.nowInSeconds:()I
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.gcBefore:(I)I
            istore 3 /* gcBefore */
        start local 3 // int gcBefore
         4: .line 206
            new java.util.ArrayList
            dup
            aload 1 /* endpoints */
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 4 /* tasks */
        start local 4 // java.util.List tasks
         5: .line 208
            new java.util.LinkedList
            dup
            aload 1 /* endpoints */
            invokespecial java.util.LinkedList.<init>:(Ljava/util/Collection;)V
            astore 5 /* requests */
        start local 5 // java.util.Queue requests
         6: .line 209
            aload 5 /* requests */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 6 /* address */
        start local 6 // java.net.InetAddress address
         7: .line 210
            new org.apache.cassandra.repair.ValidationTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 6 /* address */
            iload 3 /* gcBefore */
            invokespecial org.apache.cassandra.repair.ValidationTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;I)V
            astore 7 /* firstTask */
        start local 7 // org.apache.cassandra.repair.ValidationTask firstTask
         8: .line 211
            getstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            ldc "Validating {}"
            aload 6 /* address */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
         9: .line 212
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 6 /* address */
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            aload 7 /* firstTask */
            invokevirtual org.apache.cassandra.repair.RepairSession.waitForValidation:(Lorg/apache/cassandra/utils/Pair;Lorg/apache/cassandra/repair/ValidationTask;)V
        10: .line 213
            aload 4 /* tasks */
            aload 7 /* firstTask */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        11: .line 214
            aload 7 /* firstTask */
            astore 8 /* currentTask */
        start local 8 // org.apache.cassandra.repair.ValidationTask currentTask
        12: .line 215
            goto 18
        13: .line 217
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Queue java.net.InetAddress org.apache.cassandra.repair.ValidationTask org.apache.cassandra.repair.ValidationTask
      StackMap stack:
            aload 5 /* requests */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 9 /* nextAddress */
        start local 9 // java.net.InetAddress nextAddress
        14: .line 218
            new org.apache.cassandra.repair.ValidationTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 9 /* nextAddress */
            iload 3 /* gcBefore */
            invokespecial org.apache.cassandra.repair.ValidationTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;I)V
            astore 10 /* nextTask */
        start local 10 // org.apache.cassandra.repair.ValidationTask nextTask
        15: .line 219
            aload 4 /* tasks */
            aload 10 /* nextTask */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 220
            aload 8 /* currentTask */
            new org.apache.cassandra.repair.RepairJob$4
            dup
            aload 0 /* this */
            aload 9 /* nextAddress */
            aload 10 /* nextTask */
            invokespecial org.apache.cassandra.repair.RepairJob$4.<init>:(Lorg/apache/cassandra/repair/RepairJob;Ljava/net/InetAddress;Lorg/apache/cassandra/repair/ValidationTask;)V
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;)V
        17: .line 232
            aload 10 /* nextTask */
            astore 8 /* currentTask */
        end local 10 // org.apache.cassandra.repair.ValidationTask nextTask
        end local 9 // java.net.InetAddress nextAddress
        18: .line 215
      StackMap locals:
      StackMap stack:
            aload 5 /* requests */
            invokeinterface java.util.Queue.size:()I
            ifgt 13
        19: .line 235
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            aload 7 /* firstTask */
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.execute:(Ljava/lang/Runnable;)V
        20: .line 236
            aload 4 /* tasks */
            invokestatic com.google.common.util.concurrent.Futures.allAsList:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/ListenableFuture;
            areturn
        end local 8 // org.apache.cassandra.repair.ValidationTask currentTask
        end local 7 // org.apache.cassandra.repair.ValidationTask firstTask
        end local 6 // java.net.InetAddress address
        end local 5 // java.util.Queue requests
        end local 4 // java.util.List tasks
        end local 3 // int gcBefore
        end local 2 // java.lang.String message
        end local 1 // java.util.Collection endpoints
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   21     0         this  Lorg/apache/cassandra/repair/RepairJob;
            0   21     1    endpoints  Ljava/util/Collection<Ljava/net/InetAddress;>;
            1   21     2      message  Ljava/lang/String;
            4   21     3     gcBefore  I
            5   21     4        tasks  Ljava/util/List<Lcom/google/common/util/concurrent/ListenableFuture<Lorg/apache/cassandra/repair/TreeResponse;>;>;
            6   21     5     requests  Ljava/util/Queue<Ljava/net/InetAddress;>;
            7   21     6      address  Ljava/net/InetAddress;
            8   21     7    firstTask  Lorg/apache/cassandra/repair/ValidationTask;
           12   21     8  currentTask  Lorg/apache/cassandra/repair/ValidationTask;
           14   18     9  nextAddress  Ljava/net/InetAddress;
           15   18    10     nextTask  Lorg/apache/cassandra/repair/ValidationTask;
    Signature: (Ljava/util/Collection<Ljava/net/InetAddress;>;)Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;>;
    MethodParameters:
           Name  Flags
      endpoints  

  private com.google.common.util.concurrent.ListenableFuture<java.util.List<org.apache.cassandra.repair.TreeResponse>> sendDCAwareValidationRequest(java.util.Collection<java.net.InetAddress>);
    descriptor: (Ljava/util/Collection;)Lcom/google/common/util/concurrent/ListenableFuture;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=14, args_size=2
        start local 0 // org.apache.cassandra.repair.RepairJob this
        start local 1 // java.util.Collection endpoints
         0: .line 244
            ldc "Requesting merkle trees for %s (to %s)"
            iconst_2
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 1 /* endpoints */
            aastore
            invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            astore 2 /* message */
        start local 2 // java.lang.String message
         1: .line 245
            getstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            ldc "[repair #{}] {}"
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.sessionId:Ljava/util/UUID;
            aload 2 /* message */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V
         2: .line 246
            aload 2 /* message */
            iconst_0
            anewarray java.lang.Object
            invokestatic org.apache.cassandra.tracing.Tracing.traceRepair:(Ljava/lang/String;[Ljava/lang/Object;)V
         3: .line 247
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.keyspace:Ljava/lang/String;
            invokestatic org.apache.cassandra.db.Keyspace.open:(Ljava/lang/String;)Lorg/apache/cassandra/db/Keyspace;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            getfield org.apache.cassandra.repair.RepairJobDesc.columnFamily:Ljava/lang/String;
            invokevirtual org.apache.cassandra.db.Keyspace.getColumnFamilyStore:(Ljava/lang/String;)Lorg/apache/cassandra/db/ColumnFamilyStore;
            invokestatic org.apache.cassandra.utils.FBUtilities.nowInSeconds:()I
            invokevirtual org.apache.cassandra.db.ColumnFamilyStore.gcBefore:(I)I
            istore 3 /* gcBefore */
        start local 3 // int gcBefore
         4: .line 248
            new java.util.ArrayList
            dup
            aload 1 /* endpoints */
            invokeinterface java.util.Collection.size:()I
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 4 /* tasks */
        start local 4 // java.util.List tasks
         5: .line 250
            new java.util.HashMap
            dup
            invokespecial java.util.HashMap.<init>:()V
            astore 5 /* requestsByDatacenter */
        start local 5 // java.util.Map requestsByDatacenter
         6: .line 251
            aload 1 /* endpoints */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 7
            goto 14
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
         7: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 6 /* endpoint */
        start local 6 // java.net.InetAddress endpoint
         8: .line 253
            invokestatic org.apache.cassandra.config.DatabaseDescriptor.getEndpointSnitch:()Lorg/apache/cassandra/locator/IEndpointSnitch;
            aload 6 /* endpoint */
            invokeinterface org.apache.cassandra.locator.IEndpointSnitch.getDatacenter:(Ljava/net/InetAddress;)Ljava/lang/String;
            astore 8 /* dc */
        start local 8 // java.lang.String dc
         9: .line 254
            aload 5 /* requestsByDatacenter */
            aload 8 /* dc */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast java.util.Queue
            astore 9 /* queue */
        start local 9 // java.util.Queue queue
        10: .line 255
            aload 9 /* queue */
            ifnonnull 13
        11: .line 257
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 9 /* queue */
        12: .line 258
            aload 5 /* requestsByDatacenter */
            aload 8 /* dc */
            aload 9 /* queue */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        13: .line 260
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Map java.net.InetAddress java.util.Iterator java.lang.String java.util.Queue
      StackMap stack:
            aload 9 /* queue */
            aload 6 /* endpoint */
            invokeinterface java.util.Queue.add:(Ljava/lang/Object;)Z
            pop
        end local 9 // java.util.Queue queue
        end local 8 // java.lang.String dc
        end local 6 // java.net.InetAddress endpoint
        14: .line 251
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        15: .line 263
            aload 5 /* requestsByDatacenter */
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 7
            goto 32
      StackMap locals:
      StackMap stack:
        16: aload 7
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 6 /* entry */
        start local 6 // java.util.Map$Entry entry
        17: .line 265
            aload 6 /* entry */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            checkcast java.util.Queue
            astore 8 /* requests */
        start local 8 // java.util.Queue requests
        18: .line 266
            aload 8 /* requests */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 9 /* address */
        start local 9 // java.net.InetAddress address
        19: .line 267
            new org.apache.cassandra.repair.ValidationTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 9 /* address */
            iload 3 /* gcBefore */
            invokespecial org.apache.cassandra.repair.ValidationTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;I)V
            astore 10 /* firstTask */
        start local 10 // org.apache.cassandra.repair.ValidationTask firstTask
        20: .line 268
            getstatic org.apache.cassandra.repair.RepairJob.logger:Lorg/slf4j/Logger;
            ldc "Validating {}"
            aload 9 /* address */
            invokeinterface org.slf4j.Logger.info:(Ljava/lang/String;Ljava/lang/Object;)V
        21: .line 269
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.session:Lorg/apache/cassandra/repair/RepairSession;
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 9 /* address */
            invokestatic org.apache.cassandra.utils.Pair.create:(Ljava/lang/Object;Ljava/lang/Object;)Lorg/apache/cassandra/utils/Pair;
            aload 10 /* firstTask */
            invokevirtual org.apache.cassandra.repair.RepairSession.waitForValidation:(Lorg/apache/cassandra/utils/Pair;Lorg/apache/cassandra/repair/ValidationTask;)V
        22: .line 270
            aload 4 /* tasks */
            aload 10 /* firstTask */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        23: .line 271
            aload 10 /* firstTask */
            astore 11 /* currentTask */
        start local 11 // org.apache.cassandra.repair.ValidationTask currentTask
        24: .line 272
            goto 30
        25: .line 274
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Map java.util.Map$Entry java.util.Iterator java.util.Queue java.net.InetAddress org.apache.cassandra.repair.ValidationTask org.apache.cassandra.repair.ValidationTask
      StackMap stack:
            aload 8 /* requests */
            invokeinterface java.util.Queue.poll:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 12 /* nextAddress */
        start local 12 // java.net.InetAddress nextAddress
        26: .line 275
            new org.apache.cassandra.repair.ValidationTask
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.desc:Lorg/apache/cassandra/repair/RepairJobDesc;
            aload 12 /* nextAddress */
            iload 3 /* gcBefore */
            invokespecial org.apache.cassandra.repair.ValidationTask.<init>:(Lorg/apache/cassandra/repair/RepairJobDesc;Ljava/net/InetAddress;I)V
            astore 13 /* nextTask */
        start local 13 // org.apache.cassandra.repair.ValidationTask nextTask
        27: .line 276
            aload 4 /* tasks */
            aload 13 /* nextTask */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        28: .line 277
            aload 11 /* currentTask */
            new org.apache.cassandra.repair.RepairJob$5
            dup
            aload 0 /* this */
            aload 12 /* nextAddress */
            aload 13 /* nextTask */
            invokespecial org.apache.cassandra.repair.RepairJob$5.<init>:(Lorg/apache/cassandra/repair/RepairJob;Ljava/net/InetAddress;Lorg/apache/cassandra/repair/ValidationTask;)V
            invokestatic com.google.common.util.concurrent.Futures.addCallback:(Lcom/google/common/util/concurrent/ListenableFuture;Lcom/google/common/util/concurrent/FutureCallback;)V
        29: .line 289
            aload 13 /* nextTask */
            astore 11 /* currentTask */
        end local 13 // org.apache.cassandra.repair.ValidationTask nextTask
        end local 12 // java.net.InetAddress nextAddress
        30: .line 272
      StackMap locals:
      StackMap stack:
            aload 8 /* requests */
            invokeinterface java.util.Queue.size:()I
            ifgt 25
        31: .line 292
            aload 0 /* this */
            getfield org.apache.cassandra.repair.RepairJob.taskExecutor:Lcom/google/common/util/concurrent/ListeningExecutorService;
            aload 10 /* firstTask */
            invokeinterface com.google.common.util.concurrent.ListeningExecutorService.execute:(Ljava/lang/Runnable;)V
        end local 11 // org.apache.cassandra.repair.ValidationTask currentTask
        end local 10 // org.apache.cassandra.repair.ValidationTask firstTask
        end local 9 // java.net.InetAddress address
        end local 8 // java.util.Queue requests
        end local 6 // java.util.Map$Entry entry
        32: .line 263
      StackMap locals: org.apache.cassandra.repair.RepairJob java.util.Collection java.lang.String int java.util.List java.util.Map top java.util.Iterator
      StackMap stack:
            aload 7
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 16
        33: .line 294
            aload 4 /* tasks */
            invokestatic com.google.common.util.concurrent.Futures.allAsList:(Ljava/lang/Iterable;)Lcom/google/common/util/concurrent/ListenableFuture;
            areturn
        end local 5 // java.util.Map requestsByDatacenter
        end local 4 // java.util.List tasks
        end local 3 // int gcBefore
        end local 2 // java.lang.String message
        end local 1 // java.util.Collection endpoints
        end local 0 // org.apache.cassandra.repair.RepairJob this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   34     0                  this  Lorg/apache/cassandra/repair/RepairJob;
            0   34     1             endpoints  Ljava/util/Collection<Ljava/net/InetAddress;>;
            1   34     2               message  Ljava/lang/String;
            4   34     3              gcBefore  I
            5   34     4                 tasks  Ljava/util/List<Lcom/google/common/util/concurrent/ListenableFuture<Lorg/apache/cassandra/repair/TreeResponse;>;>;
            6   34     5  requestsByDatacenter  Ljava/util/Map<Ljava/lang/String;Ljava/util/Queue<Ljava/net/InetAddress;>;>;
            8   14     6              endpoint  Ljava/net/InetAddress;
            9   14     8                    dc  Ljava/lang/String;
           10   14     9                 queue  Ljava/util/Queue<Ljava/net/InetAddress;>;
           17   32     6                 entry  Ljava/util/Map$Entry<Ljava/lang/String;Ljava/util/Queue<Ljava/net/InetAddress;>;>;
           18   32     8              requests  Ljava/util/Queue<Ljava/net/InetAddress;>;
           19   32     9               address  Ljava/net/InetAddress;
           20   32    10             firstTask  Lorg/apache/cassandra/repair/ValidationTask;
           24   32    11           currentTask  Lorg/apache/cassandra/repair/ValidationTask;
           26   30    12           nextAddress  Ljava/net/InetAddress;
           27   30    13              nextTask  Lorg/apache/cassandra/repair/ValidationTask;
    Signature: (Ljava/util/Collection<Ljava/net/InetAddress;>;)Lcom/google/common/util/concurrent/ListenableFuture<Ljava/util/List<Lorg/apache/cassandra/repair/TreeResponse;>;>;
    MethodParameters:
           Name  Flags
      endpoints  

  static boolean access$0(org.apache.cassandra.repair.RepairJob, java.lang.Object);
    descriptor: (Lorg/apache/cassandra/repair/RepairJob;Ljava/lang/Object;)Z
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.apache.cassandra.repair.RepairJob.set:(Ljava/lang/Object;)Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  static boolean access$1(org.apache.cassandra.repair.RepairJob, java.lang.Throwable);
    descriptor: (Lorg/apache/cassandra/repair/RepairJob;Ljava/lang/Throwable;)Z
    flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 1
            aload 0
            aload 1
            invokevirtual org.apache.cassandra.repair.RepairJob.setException:(Ljava/lang/Throwable;)Z
            ireturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lcom/google/common/util/concurrent/AbstractFuture<Lorg/apache/cassandra/repair/RepairResult;>;Ljava/lang/Runnable;
SourceFile: "RepairJob.java"
NestMembers:
  org.apache.cassandra.repair.RepairJob$1  org.apache.cassandra.repair.RepairJob$2  org.apache.cassandra.repair.RepairJob$3  org.apache.cassandra.repair.RepairJob$4  org.apache.cassandra.repair.RepairJob$5
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  org.apache.cassandra.repair.RepairJob$1
  org.apache.cassandra.repair.RepairJob$2
  org.apache.cassandra.repair.RepairJob$3
  org.apache.cassandra.repair.RepairJob$4
  org.apache.cassandra.repair.RepairJob$5