class org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator<Unit> extends org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase<Unit>
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  super_class: org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
{
  final com.google.common.collect.Multimap<Unit, org.apache.cassandra.dht.Token> unitToTokens;
    descriptor: Lcom/google/common/collect/Multimap;
    flags: (0x0010) ACC_FINAL
    Signature: Lcom/google/common/collect/Multimap<TUnit;Lorg/apache/cassandra/dht/Token;>;

  final int replicas;
    descriptor: I
    flags: (0x0010) ACC_FINAL

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 39
            ldc Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.util.NavigableMap<org.apache.cassandra.dht.Token, Unit>, org.apache.cassandra.dht.tokenallocator.ReplicationStrategy<Unit>, org.apache.cassandra.dht.IPartitioner);
    descriptor: (Ljava/util/NavigableMap;Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy;Lorg/apache/cassandra/dht/IPartitioner;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // java.util.NavigableMap sortedTokens
        start local 2 // org.apache.cassandra.dht.tokenallocator.ReplicationStrategy strategy
        start local 3 // org.apache.cassandra.dht.IPartitioner partitioner
         0: .line 46
            aload 0 /* this */
            aload 1 /* sortedTokens */
            aload 2 /* strategy */
            aload 3 /* partitioner */
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase.<init>:(Ljava/util/NavigableMap;Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy;Lorg/apache/cassandra/dht/IPartitioner;)V
         1: .line 47
            aload 0 /* this */
            invokestatic com.google.common.collect.HashMultimap.create:()Lcom/google/common/collect/HashMultimap;
            putfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
         2: .line 48
            aload 1 /* sortedTokens */
            invokeinterface java.util.NavigableMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 5
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator java.util.NavigableMap org.apache.cassandra.dht.tokenallocator.ReplicationStrategy org.apache.cassandra.dht.IPartitioner top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 4 /* en */
        start local 4 // java.util.Map$Entry en
         4: .line 49
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 4 /* en */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            aload 4 /* en */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Token
            invokeinterface com.google.common.collect.Multimap.put:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        end local 4 // java.util.Map$Entry en
         5: .line 48
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 50
            aload 0 /* this */
            aload 2 /* strategy */
            invokeinterface org.apache.cassandra.dht.tokenallocator.ReplicationStrategy.replicas:()I
            putfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.replicas:I
         7: .line 51
            return
        end local 3 // org.apache.cassandra.dht.IPartitioner partitioner
        end local 2 // org.apache.cassandra.dht.tokenallocator.ReplicationStrategy strategy
        end local 1 // java.util.NavigableMap sortedTokens
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0          this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    8     1  sortedTokens  Ljava/util/NavigableMap<Lorg/apache/cassandra/dht/Token;TUnit;>;
            0    8     2      strategy  Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy<TUnit;>;
            0    8     3   partitioner  Lorg/apache/cassandra/dht/IPartitioner;
            4    5     4            en  Ljava/util/Map$Entry<Lorg/apache/cassandra/dht/Token;TUnit;>;
    Signature: (Ljava/util/NavigableMap<Lorg/apache/cassandra/dht/Token;TUnit;>;Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy<TUnit;>;Lorg/apache/cassandra/dht/IPartitioner;)V
    MethodParameters:
              Name  Flags
      sortedTokens  
      strategy      
      partitioner   

  public int getReplicas();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
         0: .line 55
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.replicas:I
            ireturn
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;

  public java.util.Collection<org.apache.cassandra.dht.Token> addUnit(Unit, int);
    descriptor: (Ljava/lang/Object;I)Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=17, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // java.lang.Object newUnit
        start local 2 // int numTokens
         0: .line 60
            getstatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 1 /* newUnit */
            invokeinterface com.google.common.collect.Multimap.containsKey:(Ljava/lang/Object;)Z
            ifeq 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 62
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitCount:()I
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.replicas:I
            if_icmpge 3
         2: .line 64
            aload 0 /* this */
            aload 1 /* newUnit */
            iload 2 /* numTokens */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.generateRandomTokens:(Ljava/lang/Object;I)Ljava/util/Collection;
            areturn
         3: .line 65
      StackMap locals:
      StackMap stack:
            iload 2 /* numTokens */
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            invokeinterface java.util.NavigableMap.size:()I
            if_icmple 5
         4: .line 67
            aload 0 /* this */
            aload 1 /* newUnit */
            iload 2 /* numTokens */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.generateRandomTokens:(Ljava/lang/Object;I)Ljava/util/Collection;
            areturn
         5: .line 71
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* numTokens */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.optimalTokenOwnership:(I)D
            dstore 3 /* optTokenOwnership */
        start local 3 // double optTokenOwnership
         6: .line 72
            invokestatic com.google.common.collect.Maps.newHashMap:()Ljava/util/HashMap;
            astore 5 /* groups */
        start local 5 // java.util.Map groups
         7: .line 73
            aload 0 /* this */
            aload 5 /* groups */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.createUnitInfos:(Ljava/util/Map;)Ljava/util/Map;
            astore 6 /* unitInfos */
        start local 6 // java.util.Map unitInfos
         8: .line 74
            aload 5 /* groups */
            invokeinterface java.util.Map.size:()I
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.replicas:I
            if_icmpge 10
         9: .line 80
            aload 0 /* this */
            aload 1 /* newUnit */
            iload 2 /* numTokens */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.generateRandomTokens:(Ljava/lang/Object;I)Ljava/util/Collection;
            areturn
        10: .line 85
      StackMap locals: double java.util.Map java.util.Map
      StackMap stack:
            new org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo
            dup
            aload 1 /* newUnit */
            iload 2 /* numTokens */
            i2d
            dload 3 /* optTokenOwnership */
            dmul
            aload 5 /* groups */
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.strategy:Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy;
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.<init>:(Ljava/lang/Object;DLjava/util/Map;Lorg/apache/cassandra/dht/tokenallocator/ReplicationStrategy;)V
            astore 7 /* newUnitInfo */
        start local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnitInfo
        11: .line 88
            aload 0 /* this */
            aload 6 /* unitInfos */
            aload 7 /* newUnitInfo */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.createTokenInfos:(Ljava/util/Map;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
            astore 8 /* tokens */
        start local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo tokens
        12: .line 89
            aload 7 /* newUnitInfo */
            iload 2 /* numTokens */
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.tokenCount:I
        13: .line 95
            aload 0 /* this */
            aload 8 /* tokens */
            aload 7 /* newUnitInfo */
            dload 3 /* optTokenOwnership */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.createCandidates:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;D)Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;
            astore 9 /* candidates */
        start local 9 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidates
        14: .line 98
            new java.util.PriorityQueue
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            invokeinterface java.util.NavigableMap.size:()I
            invokespecial java.util.PriorityQueue.<init>:(I)V
            astore 10 /* improvements */
        start local 10 // java.util.PriorityQueue improvements
        15: .line 99
            aload 9 /* candidates */
            astore 11 /* candidate */
        start local 11 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        16: .line 102
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator java.lang.Object int double java.util.Map java.util.Map org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo java.util.PriorityQueue org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
      StackMap stack:
            aload 0 /* this */
            aload 11 /* candidate */
            dload 3 /* optTokenOwnership */
            dconst_1
            iload 2 /* numTokens */
            i2d
            ddiv
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.evaluateImprovement:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;DD)D
            dstore 12 /* impr */
        start local 12 // double impr
        17: .line 103
            aload 10 /* improvements */
            new org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
            dup
            dload 12 /* impr */
            aload 11 /* candidate */
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted.<init>:(DLjava/lang/Object;)V
            invokevirtual java.util.PriorityQueue.add:(Ljava/lang/Object;)Z
            pop
        18: .line 104
            aload 11 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 11 /* candidate */
        end local 12 // double impr
        19: .line 105
            aload 11 /* candidate */
            aload 9 /* candidates */
            if_acmpne 16
        20: .line 109
            aload 10 /* improvements */
            invokevirtual java.util.PriorityQueue.remove:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted.value:Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 12 /* bestToken */
        start local 12 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo bestToken
        21: .line 110
            iconst_1
            istore 13 /* vn */
        start local 13 // int vn
        22: .line 112
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo int
      StackMap stack:
            aload 12 /* bestToken */
            aload 9 /* candidates */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.removeFrom:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 9 /* candidates */
        23: .line 113
            aload 0 /* this */
            aload 12 /* bestToken */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.confirmCandidate:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)V
        24: .line 115
            iload 13 /* vn */
            iload 2 /* numTokens */
            if_icmpne 26
        25: .line 116
            goto 34
        26: .line 123
      StackMap locals:
      StackMap stack:
            aload 10 /* improvements */
            invokevirtual java.util.PriorityQueue.remove:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted.value:Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 12 /* bestToken */
        27: .line 124
            aload 0 /* this */
            aload 12 /* bestToken */
            dload 3 /* optTokenOwnership */
            iload 13 /* vn */
            i2d
            dconst_1
            dadd
            iload 2 /* numTokens */
            i2d
            ddiv
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.evaluateImprovement:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;DD)D
            dstore 14 /* impr */
        start local 14 // double impr
        28: .line 125
            aload 10 /* improvements */
            invokevirtual java.util.PriorityQueue.peek:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
            astore 16 /* next */
        start local 16 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted next
        29: .line 129
            aload 16 /* next */
            ifnull 33
            dload 14 /* impr */
            aload 16 /* next */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted.weight:D
            dcmpl
            iflt 31
        30: .line 130
            goto 33
        31: .line 131
      StackMap locals: double org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
      StackMap stack:
            aload 10 /* improvements */
            new org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted
            dup
            dload 14 /* impr */
            aload 12 /* bestToken */
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted.<init>:(DLjava/lang/Object;)V
            invokevirtual java.util.PriorityQueue.add:(Ljava/lang/Object;)Z
            pop
        end local 16 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted next
        end local 14 // double impr
        32: .line 118
            goto 26
        33: .line 110
      StackMap locals:
      StackMap stack:
            iinc 13 /* vn */ 1
            goto 22
        end local 13 // int vn
        34: .line 135
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 1 /* newUnit */
            invokeinterface com.google.common.collect.Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
            invokestatic com.google.common.collect.ImmutableList.copyOf:(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;
            areturn
        end local 12 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo bestToken
        end local 11 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        end local 10 // java.util.PriorityQueue improvements
        end local 9 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidates
        end local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo tokens
        end local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnitInfo
        end local 6 // java.util.Map unitInfos
        end local 5 // java.util.Map groups
        end local 3 // double optTokenOwnership
        end local 2 // int numTokens
        end local 1 // java.lang.Object newUnit
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   35     0               this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   35     1            newUnit  TUnit;
            0   35     2          numTokens  I
            6   35     3  optTokenOwnership  D
            7   35     5             groups  Ljava/util/Map<Ljava/lang/Object;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;>;
            8   35     6          unitInfos  Ljava/util/Map<TUnit;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;>;
           11   35     7        newUnitInfo  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
           12   35     8             tokens  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
           14   35     9         candidates  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
           15   35    10       improvements  Ljava/util/PriorityQueue<Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$Weighted<Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;>;>;
           16   35    11          candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
           17   19    12               impr  D
           21   35    12          bestToken  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
           22   34    13                 vn  I
           28   32    14               impr  D
           29   32    16               next  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$Weighted<Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;>;
    Signature: (TUnit;I)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
           Name  Flags
      newUnit    
      numTokens  

  private java.util.Collection<org.apache.cassandra.dht.Token> generateRandomTokens(Unit, int);
    descriptor: (Ljava/lang/Object;I)Ljava/util/Collection;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // java.lang.Object newUnit
        start local 2 // int numTokens
         0: .line 140
            new java.util.HashSet
            dup
            iload 2 /* numTokens */
            invokespecial java.util.HashSet.<init>:(I)V
            astore 3 /* tokens */
        start local 3 // java.util.Set tokens
         1: .line 141
            goto 7
         2: .line 143
      StackMap locals: java.util.Set
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            invokeinterface org.apache.cassandra.dht.IPartitioner.getRandomToken:()Lorg/apache/cassandra/dht/Token;
            astore 4 /* token */
        start local 4 // org.apache.cassandra.dht.Token token
         3: .line 144
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            aload 4 /* token */
            invokeinterface java.util.NavigableMap.containsKey:(Ljava/lang/Object;)Z
            ifne 7
         4: .line 146
            aload 3 /* tokens */
            aload 4 /* token */
            invokeinterface java.util.Set.add:(Ljava/lang/Object;)Z
            pop
         5: .line 147
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            aload 4 /* token */
            aload 1 /* newUnit */
            invokeinterface java.util.NavigableMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         6: .line 148
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 1 /* newUnit */
            aload 4 /* token */
            invokeinterface com.google.common.collect.Multimap.put:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
        end local 4 // org.apache.cassandra.dht.Token token
         7: .line 141
      StackMap locals:
      StackMap stack:
            aload 3 /* tokens */
            invokeinterface java.util.Set.size:()I
            iload 2 /* numTokens */
            if_icmplt 2
         8: .line 151
            aload 3 /* tokens */
            areturn
        end local 3 // java.util.Set tokens
        end local 2 // int numTokens
        end local 1 // java.lang.Object newUnit
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    9     1    newUnit  TUnit;
            0    9     2  numTokens  I
            1    9     3     tokens  Ljava/util/Set<Lorg/apache/cassandra/dht/Token;>;
            3    7     4      token  Lorg/apache/cassandra/dht/Token;
    Signature: (TUnit;I)Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
           Name  Flags
      newUnit    
      numTokens  

  private org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo<Unit> createTokenInfos(java.util.Map<Unit, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo<Unit>>, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo);
    descriptor: (Ljava/util/Map;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=10, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // java.util.Map units
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
         0: .line 161
            aconst_null
            astore 3 /* prev */
        start local 3 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo prev
         1: .line 162
            aconst_null
            astore 4 /* first */
        start local 4 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo first
         2: .line 163
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            invokeinterface java.util.NavigableMap.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 6
            goto 9
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator java.util.Map org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo top java.util.Iterator
      StackMap stack:
         3: aload 6
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.util.Map$Entry
            astore 5 /* en */
        start local 5 // java.util.Map$Entry en
         4: .line 165
            aload 5 /* en */
            invokeinterface java.util.Map$Entry.getKey:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Token
            astore 7 /* t */
        start local 7 // org.apache.cassandra.dht.Token t
         5: .line 166
            aload 1 /* units */
            aload 5 /* en */
            invokeinterface java.util.Map$Entry.getValue:()Ljava/lang/Object;
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo
            astore 8 /* ni */
        start local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo ni
         6: .line 167
            new org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            dup
            aload 7 /* t */
            aload 8 /* ni */
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.<init>:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;)V
            astore 9 /* ti */
        start local 9 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo ti
         7: .line 168
            aload 9 /* ti */
            aload 4 /* first */
            aload 3 /* prev */
            invokevirtual org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.insertAfter:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 4 /* first */
         8: .line 169
            aload 9 /* ti */
            astore 3 /* prev */
        end local 9 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo ti
        end local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo ni
        end local 7 // org.apache.cassandra.dht.Token t
        end local 5 // java.util.Map$Entry en
         9: .line 163
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        10: .line 172
            aload 4 /* first */
            astore 5 /* curr */
        start local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        11: .line 175
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator java.util.Map org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
      StackMap stack:
            aload 0 /* this */
            aload 5 /* curr */
            aload 2 /* newUnitGroup */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateTokenInfoAndAdjustUnit:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)V
        12: .line 176
            aload 5 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 5 /* curr */
        13: .line 177
            aload 5 /* curr */
            aload 4 /* first */
            if_acmpne 11
        14: .line 179
            aload 4 /* first */
            areturn
        end local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        end local 4 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo first
        end local 3 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo prev
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
        end local 1 // java.util.Map units
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   15     0          this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   15     1         units  Ljava/util/Map<TUnit;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;>;
            0   15     2  newUnitGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            1   15     3          prev  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            2   15     4         first  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            4    9     5            en  Ljava/util/Map$Entry<Lorg/apache/cassandra/dht/Token;TUnit;>;
            5    9     7             t  Lorg/apache/cassandra/dht/Token;
            6    9     8            ni  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
            7    9     9            ti  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
           11   15     5          curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
    Signature: (Ljava/util/Map<TUnit;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;>;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
    MethodParameters:
              Name  Flags
      units         
      newUnitGroup  

  private org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo<Unit> createCandidates(org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo<Unit>, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo<Unit>, double);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;D)Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=9, args_size=4
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo tokens
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnitInfo
        start local 3 // double initialTokenOwnership
         0: .line 184
            aload 1 /* tokens */
            astore 5 /* curr */
        start local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
         1: .line 185
            aconst_null
            astore 6 /* first */
        start local 6 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo first
         2: .line 186
            aconst_null
            astore 7 /* prev */
        start local 7 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo prev
         3: .line 189
      StackMap locals: org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
      StackMap stack:
            new org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            aload 5 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.prev:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            aload 5 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            invokeinterface org.apache.cassandra.dht.IPartitioner.midpoint:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/Token;
            aload 5 /* curr */
            aload 2 /* newUnitInfo */
            invokespecial org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.<init>:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;)V
            astore 8 /* candidate */
        start local 8 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
         4: .line 190
            aload 8 /* candidate */
            aload 6 /* first */
            aload 7 /* prev */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.insertAfter:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 6 /* first */
         5: .line 192
            aload 8 /* candidate */
            dload 3 /* initialTokenOwnership */
            putfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.replicatedOwnership:D
         6: .line 193
            aload 0 /* this */
            aload 8 /* candidate */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateCandidate:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)V
         7: .line 195
            aload 8 /* candidate */
            astore 7 /* prev */
         8: .line 196
            aload 5 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 5 /* curr */
        end local 8 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
         9: .line 197
            aload 5 /* curr */
            aload 1 /* tokens */
            if_acmpne 3
        10: .line 198
            aload 7 /* prev */
            aload 6 /* first */
            putfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
        11: .line 199
            aload 6 /* first */
            areturn
        end local 7 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo prev
        end local 6 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo first
        end local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        end local 3 // double initialTokenOwnership
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnitInfo
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo tokens
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot                   Name  Signature
            0   12     0                   this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   12     1                 tokens  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            0   12     2            newUnitInfo  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
            0   12     3  initialTokenOwnership  D
            1   12     5                   curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            2   12     6                  first  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
            3   12     7                   prev  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
            4    9     8              candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;D)Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
    MethodParameters:
                       Name  Flags
      tokens                 
      newUnitInfo            
      initialTokenOwnership  

  private void populateCandidate(org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo<Unit>);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
         0: .line 205
            aload 0 /* this */
            aload 1 /* candidate */
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateTokenInfo:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/Token;
            pop
         1: .line 206
            return
        end local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    2     1  candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;)V
    MethodParameters:
           Name  Flags
      candidate  

  private void confirmCandidate(org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo<Unit>);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=8, args_size=2
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
         0: .line 220
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            astore 2 /* newUnit */
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnit
         1: .line 221
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 3 /* newToken */
        start local 3 // org.apache.cassandra.dht.Token newToken
         2: .line 222
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            aload 3 /* newToken */
            aload 2 /* newUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.unit:Ljava/lang/Object;
            invokeinterface java.util.NavigableMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 223
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 2 /* newUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.unit:Ljava/lang/Object;
            aload 3 /* newToken */
            invokeinterface com.google.common.collect.Multimap.put:(Ljava/lang/Object;Ljava/lang/Object;)Z
            pop
         4: .line 225
            aload 1 /* candidate */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.prevInRing:()Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
            astore 4 /* prev */
        start local 4 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo prev
         5: .line 226
            new org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            dup
            aload 3 /* newToken */
            aload 2 /* newUnit */
            invokespecial org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.<init>:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;)V
            astore 5 /* newTokenInfo */
        start local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo newTokenInfo
         6: .line 227
            aload 5 /* newTokenInfo */
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.replicatedOwnership:D
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.replicatedOwnership:D
         7: .line 228
            aload 5 /* newTokenInfo */
            aload 4 /* prev */
            aload 4 /* prev */
            invokevirtual org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.insertAfter:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;)Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            pop
         8: .line 231
            aload 0 /* this */
            aload 5 /* newTokenInfo */
            aload 2 /* newUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateTokenInfoAndAdjustUnit:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)V
         9: .line 233
            new org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.<init>:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator;)V
            astore 6 /* replicationVisitor */
        start local 6 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor replicationVisitor
        10: .line 234
            getstatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.$assertionsDisabled:Z
            ifne 11
            aload 5 /* newTokenInfo */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.split:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
            if_acmpeq 11
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        11: .line 235
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo org.apache.cassandra.dht.Token org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor
      StackMap stack:
            aload 5 /* newTokenInfo */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 7 /* curr */
        start local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        12: goto 19
        13: .line 238
      StackMap locals: org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
      StackMap stack:
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo
            astore 1 /* candidate */
        14: .line 239
            aload 0 /* this */
            aload 1 /* candidate */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateCandidate:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)V
        15: .line 241
            aload 6 /* replicationVisitor */
            aload 7 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.add:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Z
            ifne 17
        16: .line 242
            goto 18
        17: .line 244
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 7 /* curr */
            aload 2 /* newUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateTokenInfoAndAdjustUnit:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)V
        18: .line 235
      StackMap locals:
      StackMap stack:
            aload 7 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 7 /* curr */
      StackMap locals:
      StackMap stack:
        19: aload 6 /* replicationVisitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.visitedAll:()Z
            ifeq 13
        end local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        20: .line 247
            aload 6 /* replicationVisitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.clean:()V
        21: .line 248
            return
        end local 6 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor replicationVisitor
        end local 5 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo newTokenInfo
        end local 4 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo prev
        end local 3 // org.apache.cassandra.dht.Token newToken
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo newUnit
        end local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   22     0                this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   22     1           candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
            1   22     2             newUnit  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
            2   22     3            newToken  Lorg/apache/cassandra/dht/Token;
            5   22     4                prev  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            6   22     5        newTokenInfo  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
           10   22     6  replicationVisitor  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>.ReplicationVisitor;
           12   20     7                curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;)V
    MethodParameters:
           Name  Flags
      candidate  

  private org.apache.cassandra.dht.Token populateTokenInfo(org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo<Unit, ?>, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/Token;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=9, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo token
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
         0: .line 256
            aload 1 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            astore 3 /* tokenGroup */
        start local 3 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo tokenGroup
         1: .line 257
            new org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor.<init>:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator;)V
            astore 4 /* visitor */
        start local 4 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor visitor
         2: .line 262
            aload 1 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 6 /* replicationThreshold */
        start local 6 // org.apache.cassandra.dht.Token replicationThreshold
         3: .line 264
            aload 1 /* token */
            invokevirtual org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.prevInRing:()Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
            astore 8 /* curr */
        start local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
         4: .line 266
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor top org.apache.cassandra.dht.Token top org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
      StackMap stack:
            aload 8 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 5 /* replicationStart */
        start local 5 // org.apache.cassandra.dht.Token replicationStart
         5: .line 267
            aload 8 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            astore 7 /* currGroup */
        start local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo currGroup
         6: .line 268
            aload 4 /* visitor */
            aload 7 /* currGroup */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor.add:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Z
            ifne 8
         7: .line 269
            goto 13
         8: .line 270
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor org.apache.cassandra.dht.Token org.apache.cassandra.dht.Token org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
      StackMap stack:
            aload 4 /* visitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor.visitedAll:()Z
            ifeq 10
         9: .line 271
            goto 15
        10: .line 273
      StackMap locals:
      StackMap stack:
            aload 5 /* replicationStart */
            astore 6 /* replicationThreshold */
        11: .line 276
            aload 7 /* currGroup */
            aload 3 /* tokenGroup */
            if_acmpne 13
        12: .line 277
            goto 15
        13: .line 264
      StackMap locals:
      StackMap stack:
            aload 8 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.prev:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 8 /* curr */
        end local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo currGroup
        end local 5 // org.apache.cassandra.dht.Token replicationStart
        14: goto 4
        end local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        start local 5 // org.apache.cassandra.dht.Token replicationStart
        start local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo currGroup
        15: .line 279
      StackMap locals:
      StackMap stack:
            aload 2 /* newUnitGroup */
            aload 3 /* tokenGroup */
            if_acmpne 17
        16: .line 281
            aload 1 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 6 /* replicationThreshold */
            goto 19
        17: .line 282
      StackMap locals:
      StackMap stack:
            aload 2 /* newUnitGroup */
            aload 7 /* currGroup */
            if_acmpeq 19
            aload 4 /* visitor */
            aload 2 /* newUnitGroup */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor.seen:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Z
            ifeq 19
        18: .line 284
            aload 5 /* replicationStart */
            astore 6 /* replicationThreshold */
        19: .line 285
      StackMap locals:
      StackMap stack:
            aload 4 /* visitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor.clean:()V
        20: .line 287
            aload 1 /* token */
            aload 6 /* replicationThreshold */
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicationThreshold:Lorg/apache/cassandra/dht/Token;
        21: .line 288
            aload 1 /* token */
            aload 5 /* replicationStart */
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicationStart:Lorg/apache/cassandra/dht/Token;
        22: .line 289
            aload 5 /* replicationStart */
            areturn
        end local 7 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo currGroup
        end local 6 // org.apache.cassandra.dht.Token replicationThreshold
        end local 5 // org.apache.cassandra.dht.Token replicationStart
        end local 4 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor visitor
        end local 3 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo tokenGroup
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo token
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   23     0                  this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   23     1                 token  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<TUnit;*>;
            0   23     2          newUnitGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            1   23     3            tokenGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            2   23     4               visitor  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>.PopulateVisitor;
            5   14     5      replicationStart  Lorg/apache/cassandra/dht/Token;
           15   23     5      replicationStart  Lorg/apache/cassandra/dht/Token;
            3   23     6  replicationThreshold  Lorg/apache/cassandra/dht/Token;
            6   14     7             currGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
           15   23     7             currGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            4   15     8                  curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<TUnit;*>;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/Token;
    MethodParameters:
              Name  Flags
      token         
      newUnitGroup  

  private void populateTokenInfoAndAdjustUnit(org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo<Unit>, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=7, locals=8, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo populate
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
         0: .line 294
            aload 0 /* this */
            aload 1 /* populate */
            aload 2 /* newUnitGroup */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.populateTokenInfo:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Lorg/apache/cassandra/dht/Token;
            astore 3 /* replicationStart */
        start local 3 // org.apache.cassandra.dht.Token replicationStart
         1: .line 295
            aload 3 /* replicationStart */
            aload 1 /* populate */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            invokevirtual org.apache.cassandra.dht.Token.size:(Lorg/apache/cassandra/dht/Token;)D
            dstore 4 /* newOwnership */
        start local 4 // double newOwnership
         2: .line 296
            aload 1 /* populate */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.replicatedOwnership:D
            dstore 6 /* oldOwnership */
        start local 6 // double oldOwnership
         3: .line 297
            aload 1 /* populate */
            dload 4 /* newOwnership */
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.replicatedOwnership:D
         4: .line 298
            aload 1 /* populate */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            dup
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.ownership:D
            dload 4 /* newOwnership */
            dload 6 /* oldOwnership */
            dsub
            dadd
            putfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.ownership:D
         5: .line 299
            return
        end local 6 // double oldOwnership
        end local 4 // double newOwnership
        end local 3 // org.apache.cassandra.dht.Token replicationStart
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo newUnitGroup
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo populate
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    6     1          populate  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            0    6     2      newUnitGroup  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            1    6     3  replicationStart  Lorg/apache/cassandra/dht/Token;
            2    6     4      newOwnership  D
            3    6     6      oldOwnership  D
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)V
    MethodParameters:
              Name  Flags
      populate      
      newUnitGroup  

  private double evaluateImprovement(org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo<Unit>, double, );
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;DD)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=10, locals=16, args_size=4
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        start local 2 // double optTokenOwnership
        start local 4 // double newUnitMult
         0: .line 307
            dconst_0
            dstore 6 /* tokenChange */
        start local 6 // double tokenChange
         1: .line 309
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            astore 8 /* candidateUnit */
        start local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo candidateUnit
         2: .line 310
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 9 /* candidateEnd */
        start local 9 // org.apache.cassandra.dht.Token candidateEnd
         3: .line 314
            new org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker
            dup
            aload 8 /* candidateUnit */
            invokespecial org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker.<init>:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;)V
            astore 10 /* unitTracker */
        start local 10 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker unitTracker
         4: .line 317
            dload 6 /* tokenChange */
            aload 0 /* this */
            aload 1 /* candidate */
            aload 8 /* candidateUnit */
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.replicationStart:Lorg/apache/cassandra/dht/Token;
            aload 9 /* candidateEnd */
            dload 2 /* optTokenOwnership */
            aload 10 /* unitTracker */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.applyOwnershipAdjustment:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;DLorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker;)D
            dadd
            dstore 6 /* tokenChange */
         5: .line 320
            new org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.<init>:(Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator;)V
            astore 11 /* replicationVisitor */
        start local 11 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor replicationVisitor
         6: .line 321
            aload 1 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.split:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;
            astore 12 /* curr */
        start local 12 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
         7: goto 15
         8: .line 323
      StackMap locals: org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo double double double org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo org.apache.cassandra.dht.Token org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
      StackMap stack:
            aload 12 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.owningUnit:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;
            astore 13 /* currUnit */
        start local 13 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo currUnit
         9: .line 325
            aload 11 /* replicationVisitor */
            aload 13 /* currUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.group:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.add:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$GroupInfo;)Z
            ifne 11
        10: .line 326
            goto 14
        11: .line 328
      StackMap locals: org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo
      StackMap stack:
            aload 12 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            astore 14 /* replicationEnd */
        start local 14 // org.apache.cassandra.dht.Token replicationEnd
        12: .line 329
            aload 0 /* this */
            aload 12 /* curr */
            aload 1 /* candidate */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.findUpdatedReplicationStart:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)Lorg/apache/cassandra/dht/Token;
            astore 15 /* replicationStart */
        start local 15 // org.apache.cassandra.dht.Token replicationStart
        13: .line 330
            dload 6 /* tokenChange */
            aload 0 /* this */
            aload 12 /* curr */
            aload 13 /* currUnit */
            aload 15 /* replicationStart */
            aload 14 /* replicationEnd */
            dload 2 /* optTokenOwnership */
            aload 10 /* unitTracker */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.applyOwnershipAdjustment:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;DLorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker;)D
            dadd
            dstore 6 /* tokenChange */
        end local 15 // org.apache.cassandra.dht.Token replicationStart
        end local 14 // org.apache.cassandra.dht.Token replicationEnd
        end local 13 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo currUnit
        14: .line 321
      StackMap locals:
      StackMap stack:
            aload 12 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo
            astore 12 /* curr */
      StackMap locals:
      StackMap stack:
        15: aload 11 /* replicationVisitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.visitedAll:()Z
            ifeq 8
        end local 12 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        16: .line 332
            aload 11 /* replicationVisitor */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor.clean:()V
        17: .line 334
            aload 10 /* unitTracker */
            dload 4 /* newUnitMult */
            dload 2 /* optTokenOwnership */
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker.calculateUnitChange:(DD)D
            dstore 12 /* nodeChange */
        start local 12 // double nodeChange
        18: .line 335
            dload 6 /* tokenChange */
            dload 12 /* nodeChange */
            dadd
            dneg
            dreturn
        end local 12 // double nodeChange
        end local 11 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor replicationVisitor
        end local 10 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker unitTracker
        end local 9 // org.apache.cassandra.dht.Token candidateEnd
        end local 8 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo candidateUnit
        end local 6 // double tokenChange
        end local 4 // double newUnitMult
        end local 2 // double optTokenOwnership
        end local 1 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0   19     0                this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0   19     1           candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
            0   19     2   optTokenOwnership  D
            0   19     4         newUnitMult  D
            1   19     6         tokenChange  D
            2   19     8       candidateUnit  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
            3   19     9        candidateEnd  Lorg/apache/cassandra/dht/Token;
            4   19    10         unitTracker  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker<TUnit;>;
            6   19    11  replicationVisitor  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>.ReplicationVisitor;
            7   16    12                curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            9   14    13            currUnit  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
           12   14    14      replicationEnd  Lorg/apache/cassandra/dht/Token;
           13   14    15    replicationStart  Lorg/apache/cassandra/dht/Token;
           18   19    12          nodeChange  D
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;DD)D
    MethodParameters:
                   Name  Flags
      candidate          
      optTokenOwnership  
      newUnitMult        

  private org.apache.cassandra.dht.Token findUpdatedReplicationStart(org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo<Unit>, org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo<Unit>);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo;Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo;)Lorg/apache/cassandra/dht/Token;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        start local 2 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
         0: .line 344
            aload 1 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.replicationThreshold:Lorg/apache/cassandra/dht/Token;
            aload 2 /* candidate */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo.token:Lorg/apache/cassandra/dht/Token;
            aload 1 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo.token:Lorg/apache/cassandra/dht/Token;
            invokestatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.furtherStartToken:(Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/Token;
            areturn
        end local 2 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo candidate
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo curr
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    1     0       this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    1     1       curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;
            0    1     2  candidate  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$TokenInfo<TUnit;>;Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$CandidateInfo<TUnit;>;)Lorg/apache/cassandra/dht/Token;
    MethodParameters:
           Name  Flags
      curr       
      candidate  

  private double applyOwnershipAdjustment(org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo<Unit, ?>, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo<Unit>, org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token, double, org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker<Unit>);
    descriptor: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;DLorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker;)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=6, locals=14, args_size=7
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo curr
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo currUnit
        start local 3 // org.apache.cassandra.dht.Token replicationStart
        start local 4 // org.apache.cassandra.dht.Token replicationEnd
        start local 5 // double optTokenOwnership
        start local 7 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker unitTracker
         0: .line 355
            aload 1 /* curr */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicatedOwnership:D
            dstore 8 /* oldOwnership */
        start local 8 // double oldOwnership
         1: .line 356
            aload 3 /* replicationStart */
            aload 4 /* replicationEnd */
            invokevirtual org.apache.cassandra.dht.Token.size:(Lorg/apache/cassandra/dht/Token;)D
            dstore 10 /* newOwnership */
        start local 10 // double newOwnership
         2: .line 357
            aload 2 /* currUnit */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo.tokenCount:I
            i2d
            dstore 12 /* tokenCount */
        start local 12 // double tokenCount
         3: .line 358
            getstatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.$assertionsDisabled:Z
            ifne 4
            dload 12 /* tokenCount */
            dconst_0
            dcmpl
            ifgt 4
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         4: .line 359
      StackMap locals: double double double
      StackMap stack:
            aload 7 /* unitTracker */
            aload 2 /* currUnit */
            dload 10 /* newOwnership */
            dload 8 /* oldOwnership */
            dsub
            invokevirtual org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker.add:(Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo;D)V
         5: .line 360
            dload 10 /* newOwnership */
            dload 5 /* optTokenOwnership */
            dsub
            invokestatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sq:(D)D
            dload 8 /* oldOwnership */
            dload 5 /* optTokenOwnership */
            dsub
            invokestatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sq:(D)D
            dsub
            dload 12 /* tokenCount */
            invokestatic org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sq:(D)D
            ddiv
            dreturn
        end local 12 // double tokenCount
        end local 10 // double newOwnership
        end local 8 // double oldOwnership
        end local 7 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker unitTracker
        end local 5 // double optTokenOwnership
        end local 4 // org.apache.cassandra.dht.Token replicationEnd
        end local 3 // org.apache.cassandra.dht.Token replicationStart
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo currUnit
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo curr
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    6     0               this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    6     1               curr  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<TUnit;*>;
            0    6     2           currUnit  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;
            0    6     3   replicationStart  Lorg/apache/cassandra/dht/Token;
            0    6     4     replicationEnd  Lorg/apache/cassandra/dht/Token;
            0    6     5  optTokenOwnership  D
            0    6     7        unitTracker  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker<TUnit;>;
            1    6     8       oldOwnership  D
            2    6    10       newOwnership  D
            3    6    12         tokenCount  D
    Signature: (Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<TUnit;*>;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$UnitInfo<TUnit;>;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;DLorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator$UnitAdjustmentTracker<TUnit;>;)D
    MethodParameters:
                   Name  Flags
      curr               
      currUnit           
      replicationStart   
      replicationEnd     
      optTokenOwnership  
      unitTracker        

  private double optimalTokenOwnership(int);
    descriptor: (I)D
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // int tokensToAdd
         0: .line 498
            dconst_1
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.replicas:I
            i2d
            dmul
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            invokeinterface java.util.NavigableMap.size:()I
            iload 1 /* tokensToAdd */
            iadd
            i2d
            ddiv
            dreturn
        end local 1 // int tokensToAdd
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    1     0         this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    1     1  tokensToAdd  I
    MethodParameters:
             Name  Flags
      tokensToAdd  

  private static org.apache.cassandra.dht.Token furtherStartToken(org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token, org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/dht/Token;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.dht.Token t1
        start local 1 // org.apache.cassandra.dht.Token t2
        start local 2 // org.apache.cassandra.dht.Token towards
         0: .line 508
            aload 0 /* t1 */
            aload 2 /* towards */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 509
            aload 1 /* t2 */
            areturn
         2: .line 510
      StackMap locals:
      StackMap stack:
            aload 1 /* t2 */
            aload 2 /* towards */
            invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
            ifeq 4
         3: .line 511
            aload 0 /* t1 */
            areturn
         4: .line 513
      StackMap locals:
      StackMap stack:
            aload 0 /* t1 */
            aload 2 /* towards */
            invokevirtual org.apache.cassandra.dht.Token.size:(Lorg/apache/cassandra/dht/Token;)D
            aload 1 /* t2 */
            aload 2 /* towards */
            invokevirtual org.apache.cassandra.dht.Token.size:(Lorg/apache/cassandra/dht/Token;)D
            dcmpl
            ifle 5
            aload 0 /* t1 */
            goto 6
      StackMap locals:
      StackMap stack:
         5: aload 1 /* t2 */
      StackMap locals:
      StackMap stack: org.apache.cassandra.dht.Token
         6: areturn
        end local 2 // org.apache.cassandra.dht.Token towards
        end local 1 // org.apache.cassandra.dht.Token t2
        end local 0 // org.apache.cassandra.dht.Token t1
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    7     0       t1  Lorg/apache/cassandra/dht/Token;
            0    7     1       t2  Lorg/apache/cassandra/dht/Token;
            0    7     2  towards  Lorg/apache/cassandra/dht/Token;
    MethodParameters:
         Name  Flags
      t1       
      t2       
      towards  

  private static double sq(double);
    descriptor: (D)D
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // double d
         0: .line 518
            dload 0 /* d */
            dload 0 /* d */
            dmul
            dreturn
        end local 0 // double d
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0     d  D
    MethodParameters:
      Name  Flags
      d     

  void removeUnit();
    descriptor: (Ljava/lang/Object;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
        start local 1 // java.lang.Object n
         0: .line 527
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            aload 1 /* n */
            invokeinterface com.google.common.collect.Multimap.removeAll:(Ljava/lang/Object;)Ljava/util/Collection;
            astore 2 /* tokens */
        start local 2 // java.util.Collection tokens
         1: .line 528
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.sortedTokens:Ljava/util/NavigableMap;
            invokeinterface java.util.NavigableMap.keySet:()Ljava/util/Set;
            aload 2 /* tokens */
            invokeinterface java.util.Set.removeAll:(Ljava/util/Collection;)Z
            pop
         2: .line 529
            return
        end local 2 // java.util.Collection tokens
        end local 1 // java.lang.Object n
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;
            0    3     1       n  TUnit;
            1    3     2  tokens  Ljava/util/Collection<Lorg/apache/cassandra/dht/Token;>;
    Signature: (TUnit;)V
    MethodParameters:
      Name  Flags
      n     

  public int unitCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
         0: .line 533
            aload 0 /* this */
            getfield org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator.unitToTokens:Lcom/google/common/collect/Multimap;
            invokeinterface com.google.common.collect.Multimap.asMap:()Ljava/util/Map;
            invokeinterface java.util.Map.size:()I
            ireturn
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
         0: .line 538
            aload 0 /* this */
            invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
            invokevirtual java.lang.Class.getSimpleName:()Ljava/lang/String;
            areturn
        end local 0 // org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/dht/tokenallocator/ReplicationAwareTokenAllocator<TUnit;>;

  static void dumpTokens(java.lang.String, org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo<?, ?>);
    descriptor: (Ljava/lang/String;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo;)V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=7, locals=3, args_size=2
        start local 0 // java.lang.String lead
        start local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo tokens
         0: .line 563
            aload 1 /* tokens */
            astore 2 /* token */
        start local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo token
         1: .line 566
      StackMap locals: org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo
      StackMap stack:
            getstatic java.lang.System.out:Ljava/io/PrintStream;
            ldc "%s%s: rs %s rt %s size %.2e%n"
            iconst_5
            anewarray java.lang.Object
            dup
            iconst_0
            aload 0 /* lead */
            aastore
            dup
            iconst_1
            aload 2 /* token */
            aastore
            dup
            iconst_2
            aload 2 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicationStart:Lorg/apache/cassandra/dht/Token;
            aastore
            dup
            iconst_3
            aload 2 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicationThreshold:Lorg/apache/cassandra/dht/Token;
            aastore
            dup
            iconst_4
            aload 2 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.replicatedOwnership:D
            invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
            aastore
            invokevirtual java.io.PrintStream.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintStream;
            pop
         2: .line 567
            aload 2 /* token */
            getfield org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo.next:Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$CircularList;
            checkcast org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo
            astore 2 /* token */
         3: .line 568
            aload 2 /* token */
            ifnull 4
            aload 2 /* token */
            aload 1 /* tokens */
            if_acmpne 1
         4: .line 569
      StackMap locals:
      StackMap stack:
            return
        end local 2 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo token
        end local 1 // org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo tokens
        end local 0 // java.lang.String lead
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    lead  Ljava/lang/String;
            0    5     1  tokens  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<**>;
            1    5     2   token  Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<**>;
    Signature: (Ljava/lang/String;Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase$BaseTokenInfo<**>;)V
    MethodParameters:
        Name  Flags
      lead    
      tokens  
}
Signature: <Unit:Ljava/lang/Object;>Lorg/apache/cassandra/dht/tokenallocator/TokenAllocatorBase<TUnit;>;
SourceFile: "ReplicationAwareTokenAllocator.java"
NestMembers:
  org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo  org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$GroupVisitor  org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor  org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor  org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  private CandidateInfo = org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$CandidateInfo of org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  private abstract GroupVisitor = org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$GroupVisitor of org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  private PopulateVisitor = org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$PopulateVisitor of org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  private ReplicationVisitor = org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$ReplicationVisitor of org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  private UnitAdjustmentTracker = org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator$UnitAdjustmentTracker of org.apache.cassandra.dht.tokenallocator.ReplicationAwareTokenAllocator
  BaseTokenInfo = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$BaseTokenInfo of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
  GroupInfo = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$GroupInfo of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
  TokenInfo = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$TokenInfo of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
  UnitInfo = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$UnitInfo of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
  Weighted = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$Weighted of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase
  private CircularList = org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase$CircularList of org.apache.cassandra.dht.tokenallocator.TokenAllocatorBase