public class org.apache.cassandra.utils.MerkleTrees implements java.lang.Iterable<java.util.Map$Entry<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>, org.apache.cassandra.utils.MerkleTree>>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.MerkleTrees
  super_class: java.lang.Object
{
  public static final org.apache.cassandra.utils.MerkleTrees$MerkleTreesSerializer serializer;
    descriptor: Lorg/apache/cassandra/utils/MerkleTrees$MerkleTreesSerializer;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  private java.util.Map<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>, org.apache.cassandra.utils.MerkleTree> merkleTrees;
    descriptor: Ljava/util/Map;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Map<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;Lorg/apache/cassandra/utils/MerkleTree;>;

  private org.apache.cassandra.dht.IPartitioner partitioner;
    descriptor: Lorg/apache/cassandra/dht/IPartitioner;
    flags: (0x0002) ACC_PRIVATE

  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=2, locals=0, args_size=0
         0: .line 43
            ldc Lorg/apache/cassandra/utils/MerkleTrees;
            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.utils.MerkleTrees.$assertionsDisabled:Z
         3: .line 45
            new org.apache.cassandra.utils.MerkleTrees$MerkleTreesSerializer
            dup
            invokespecial org.apache.cassandra.utils.MerkleTrees$MerkleTreesSerializer.<init>:()V
            putstatic org.apache.cassandra.utils.MerkleTrees.serializer:Lorg/apache/cassandra/utils/MerkleTrees$MerkleTreesSerializer;
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(org.apache.cassandra.dht.IPartitioner);
    descriptor: (Lorg/apache/cassandra/dht/IPartitioner;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.IPartitioner partitioner
         0: .line 58
            aload 0 /* this */
            aload 1 /* partitioner */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            invokespecial org.apache.cassandra.utils.MerkleTrees.<init>:(Lorg/apache/cassandra/dht/IPartitioner;Ljava/util/Collection;)V
         1: .line 59
            return
        end local 1 // org.apache.cassandra.dht.IPartitioner partitioner
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    2     0         this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    2     1  partitioner  Lorg/apache/cassandra/dht/IPartitioner;
    MethodParameters:
             Name  Flags
      partitioner  

  private void <init>(org.apache.cassandra.dht.IPartitioner, java.util.Collection<org.apache.cassandra.utils.MerkleTree>);
    descriptor: (Lorg/apache/cassandra/dht/IPartitioner;Ljava/util/Collection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.IPartitioner partitioner
        start local 2 // java.util.Collection merkleTrees
         0: .line 61
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 47
            aload 0 /* this */
            new java.util.TreeMap
            dup
            new org.apache.cassandra.utils.MerkleTrees$TokenRangeComparator
            dup
            invokespecial org.apache.cassandra.utils.MerkleTrees$TokenRangeComparator.<init>:()V
            invokespecial java.util.TreeMap.<init>:(Ljava/util/Comparator;)V
            putfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
         2: .line 63
            aload 0 /* this */
            aload 1 /* partitioner */
            putfield org.apache.cassandra.utils.MerkleTrees.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
         3: .line 64
            aload 0 /* this */
            aload 2 /* merkleTrees */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.addTrees:(Ljava/util/Collection;)V
         4: .line 65
            return
        end local 2 // java.util.Collection merkleTrees
        end local 1 // org.apache.cassandra.dht.IPartitioner partitioner
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    5     0         this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    5     1  partitioner  Lorg/apache/cassandra/dht/IPartitioner;
            0    5     2  merkleTrees  Ljava/util/Collection<Lorg/apache/cassandra/utils/MerkleTree;>;
    Signature: (Lorg/apache/cassandra/dht/IPartitioner;Ljava/util/Collection<Lorg/apache/cassandra/utils/MerkleTree;>;)V
    MethodParameters:
             Name  Flags
      partitioner  
      merkleTrees  

  public java.util.Collection<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>> ranges();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 74
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
    Signature: ()Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;

  public org.apache.cassandra.dht.IPartitioner partitioner();
    descriptor: ()Lorg/apache/cassandra/dht/IPartitioner;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 84
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;

  public void addMerkleTrees(int, java.util.Collection<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>>);
    descriptor: (ILjava/util/Collection;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // int maxsize
        start local 2 // java.util.Collection ranges
         0: .line 95
            aload 2 /* ranges */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 3
      StackMap locals: org.apache.cassandra.utils.MerkleTrees int java.util.Collection top java.util.Iterator
      StackMap stack:
         1: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 3 /* range */
        start local 3 // org.apache.cassandra.dht.Range range
         2: .line 97
            aload 0 /* this */
            iload 1 /* maxsize */
            aload 3 /* range */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.addMerkleTree:(ILorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
            pop
        end local 3 // org.apache.cassandra.dht.Range range
         3: .line 95
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 99
            return
        end local 2 // java.util.Collection ranges
        end local 1 // int maxsize
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    5     0     this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    5     1  maxsize  I
            0    5     2   ranges  Ljava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
            2    3     3    range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    Signature: (ILjava/util/Collection<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;)V
    MethodParameters:
         Name  Flags
      maxsize  
      ranges   

  public org.apache.cassandra.utils.MerkleTree addMerkleTree(int, org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
    descriptor: (ILorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // int maxsize
        start local 2 // org.apache.cassandra.dht.Range range
         0: .line 110
            aload 0 /* this */
            iload 1 /* maxsize */
            bipush 126
            aload 2 /* range */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.addMerkleTree:(IBLorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
            areturn
        end local 2 // org.apache.cassandra.dht.Range range
        end local 1 // int maxsize
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    1     1  maxsize  I
            0    1     2    range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    Signature: (ILorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
         Name  Flags
      maxsize  
      range    

  public org.apache.cassandra.utils.MerkleTree addMerkleTree(int, byte, org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
    descriptor: (IBLorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=4
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // int maxsize
        start local 2 // byte hashdepth
        start local 3 // org.apache.cassandra.dht.Range range
         0: .line 116
            new org.apache.cassandra.utils.MerkleTree
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.partitioner:Lorg/apache/cassandra/dht/IPartitioner;
            aload 3 /* range */
            iload 2 /* hashdepth */
            iload 1 /* maxsize */
            i2l
            invokespecial org.apache.cassandra.utils.MerkleTree.<init>:(Lorg/apache/cassandra/dht/IPartitioner;Lorg/apache/cassandra/dht/Range;BJ)V
            astore 4 /* tree */
        start local 4 // org.apache.cassandra.utils.MerkleTree tree
         1: .line 117
            aload 0 /* this */
            aload 4 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.addTree:(Lorg/apache/cassandra/utils/MerkleTree;)V
         2: .line 119
            aload 4 /* tree */
            areturn
        end local 4 // org.apache.cassandra.utils.MerkleTree tree
        end local 3 // org.apache.cassandra.dht.Range range
        end local 2 // byte hashdepth
        end local 1 // int maxsize
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    3     0       this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    3     1    maxsize  I
            0    3     2  hashdepth  B
            0    3     3      range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
            1    3     4       tree  Lorg/apache/cassandra/utils/MerkleTree;
    Signature: (IBLorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)Lorg/apache/cassandra/utils/MerkleTree;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
           Name  Flags
      maxsize    
      hashdepth  
      range      

  public org.apache.cassandra.utils.MerkleTree$TreeRange get(org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Token t
         0: .line 131
            aload 0 /* this */
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.getMerkleTree:(Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree;
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTree.get:(Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
            areturn
        end local 1 // org.apache.cassandra.dht.Token t
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    1     1     t  Lorg/apache/cassandra/dht/Token;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
      Name  Flags
      t     

  public void init();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 139
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 2
            goto 3
      StackMap locals: org.apache.cassandra.utils.MerkleTrees top java.util.Iterator
      StackMap stack:
         1: aload 2
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 1 /* range */
        start local 1 // org.apache.cassandra.dht.Range range
         2: .line 141
            aload 0 /* this */
            aload 1 /* range */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.init:(Lorg/apache/cassandra/dht/Range;)V
        end local 1 // org.apache.cassandra.dht.Range range
         3: .line 139
      StackMap locals:
      StackMap stack:
            aload 2
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 143
            return
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            2    3     1  range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;

  public void init(org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
    descriptor: (Lorg/apache/cassandra/dht/Range;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Range range
         0: .line 152
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            aload 1 /* range */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            invokevirtual org.apache.cassandra.utils.MerkleTree.init:()V
         1: .line 153
            return
        end local 1 // org.apache.cassandra.dht.Range range
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    2     1  range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    Signature: (Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)V
    MethodParameters:
       Name  Flags
      range  

  public boolean split(org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Token t
         0: .line 163
            aload 0 /* this */
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.getMerkleTree:(Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree;
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTree.split:(Lorg/apache/cassandra/dht/Token;)Z
            ireturn
        end local 1 // org.apache.cassandra.dht.Token t
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    1     1     t  Lorg/apache/cassandra/dht/Token;
    MethodParameters:
      Name  Flags
      t     

  public void invalidate(org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Token t
         0: .line 174
            aload 0 /* this */
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.getMerkleTree:(Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree;
            aload 1 /* t */
            invokevirtual org.apache.cassandra.utils.MerkleTree.invalidate:(Lorg/apache/cassandra/dht/Token;)V
         1: .line 175
            return
        end local 1 // org.apache.cassandra.dht.Token t
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    2     1     t  Lorg/apache/cassandra/dht/Token;
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    MethodParameters:
      Name  Flags
      t     

  public org.apache.cassandra.utils.MerkleTree getMerkleTree(org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
    descriptor: (Lorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Range range
         0: .line 185
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            aload 1 /* range */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            areturn
        end local 1 // org.apache.cassandra.dht.Range range
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    1     1  range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    Signature: (Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
       Name  Flags
      range  

  public long size();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 190
            lconst_0
            lstore 1 /* size */
        start local 1 // long size
         1: .line 192
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.apache.cassandra.utils.MerkleTrees long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 3 /* tree */
        start local 3 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 194
            lload 1 /* size */
            aload 3 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTree.size:()J
            ladd
            lstore 1 /* size */
        end local 3 // org.apache.cassandra.utils.MerkleTree tree
         4: .line 192
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 197
            lload 1 /* size */
            lreturn
        end local 1 // long size
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    6     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
            1    6     1  size  J
            3    4     3  tree  Lorg/apache/cassandra/utils/MerkleTree;

  public void maxsize(org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>, );
    descriptor: (Lorg/apache/cassandra/dht/Range;I)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Range range
        start local 2 // int maxsize
         0: .line 203
            aload 0 /* this */
            aload 1 /* range */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.getMerkleTree:(Lorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
            iload 2 /* maxsize */
            i2l
            invokevirtual org.apache.cassandra.utils.MerkleTree.maxsize:(J)V
         1: .line 204
            return
        end local 2 // int maxsize
        end local 1 // org.apache.cassandra.dht.Range range
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    2     0     this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    2     1    range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
            0    2     2  maxsize  I
    Signature: (Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;I)V
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    MethodParameters:
         Name  Flags
      range    
      maxsize  

  private org.apache.cassandra.utils.MerkleTree getMerkleTree(org.apache.cassandra.dht.Token);
    descriptor: (Lorg/apache/cassandra/dht/Token;)Lorg/apache/cassandra/utils/MerkleTree;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Token t
         0: .line 214
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.apache.cassandra.dht.Token top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 2 /* range */
        start local 2 // org.apache.cassandra.dht.Range range
         2: .line 216
            aload 2 /* range */
            aload 1 /* t */
            invokevirtual org.apache.cassandra.dht.Range.contains:(Lorg/apache/cassandra/dht/RingPosition;)Z
            ifeq 4
         3: .line 217
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            aload 2 /* range */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            areturn
        end local 2 // org.apache.cassandra.dht.Range range
         4: .line 214
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 220
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Expected tree for token "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* t */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
        end local 1 // org.apache.cassandra.dht.Token t
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    6     1      t  Lorg/apache/cassandra/dht/Token;
            2    4     2  range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
      Name  Flags
      t     

  private void addTrees(java.util.Collection<org.apache.cassandra.utils.MerkleTree>);
    descriptor: (Ljava/util/Collection;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // java.util.Collection trees
         0: .line 225
            aload 1 /* trees */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.apache.cassandra.utils.MerkleTrees java.util.Collection top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 2 /* tree */
        start local 2 // org.apache.cassandra.utils.MerkleTree tree
         2: .line 227
            aload 0 /* this */
            aload 2 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.addTree:(Lorg/apache/cassandra/utils/MerkleTree;)V
        end local 2 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 225
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 229
            return
        end local 1 // java.util.Collection trees
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    5     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    5     1  trees  Ljava/util/Collection<Lorg/apache/cassandra/utils/MerkleTree;>;
            2    3     2   tree  Lorg/apache/cassandra/utils/MerkleTree;
    Signature: (Ljava/util/Collection<Lorg/apache/cassandra/utils/MerkleTree;>;)V
    MethodParameters:
       Name  Flags
      trees  

  private void addTree(org.apache.cassandra.utils.MerkleTree);
    descriptor: (Lorg/apache/cassandra/utils/MerkleTree;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.utils.MerkleTree tree
         0: .line 233
            getstatic org.apache.cassandra.utils.MerkleTrees.$assertionsDisabled:Z
            ifne 1
            aload 0 /* this */
            aload 1 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTrees.validateNonOverlapping:(Lorg/apache/cassandra/utils/MerkleTree;)Z
            ifne 1
            new java.lang.AssertionError
            dup
            new java.lang.StringBuilder
            dup
            ldc "Range ["
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "] is intersecting an existing range"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
            athrow
         1: .line 235
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            aload 1 /* tree */
            invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
         2: .line 236
            return
        end local 1 // org.apache.cassandra.utils.MerkleTree tree
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    3     1  tree  Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
      Name  Flags
      tree  

  private boolean validateNonOverlapping(org.apache.cassandra.utils.MerkleTree);
    descriptor: (Lorg/apache/cassandra/utils/MerkleTree;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.utils.MerkleTree tree
         0: .line 240
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 3
            goto 4
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.apache.cassandra.utils.MerkleTree top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 2 /* range */
        start local 2 // org.apache.cassandra.dht.Range range
         2: .line 242
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            aload 2 /* range */
            invokevirtual org.apache.cassandra.dht.Range.intersects:(Lorg/apache/cassandra/dht/Range;)Z
            ifeq 4
         3: .line 243
            iconst_0
            ireturn
        end local 2 // org.apache.cassandra.dht.Range range
         4: .line 240
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         5: .line 246
            iconst_1
            ireturn
        end local 1 // org.apache.cassandra.utils.MerkleTree tree
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    6     1   tree  Lorg/apache/cassandra/utils/MerkleTree;
            2    4     2  range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
    MethodParameters:
      Name  Flags
      tree  

  public org.apache.cassandra.utils.MerkleTrees$TreeRangeIterator invalids();
    descriptor: ()Lorg/apache/cassandra/utils/MerkleTrees$TreeRangeIterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 256
            new org.apache.cassandra.utils.MerkleTrees$TreeRangeIterator
            dup
            aload 0 /* this */
            invokespecial org.apache.cassandra.utils.MerkleTrees$TreeRangeIterator.<init>:(Lorg/apache/cassandra/utils/MerkleTrees;)V
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;

  public void logRowCountPerLeaf(org.slf4j.Logger);
    descriptor: (Lorg/slf4j/Logger;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.slf4j.Logger logger
         0: .line 266
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.slf4j.Logger top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 2 /* tree */
        start local 2 // org.apache.cassandra.utils.MerkleTree tree
         2: .line 268
            aload 2 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTree.histogramOfRowCountPerLeaf:()Lorg/apache/cassandra/utils/EstimatedHistogram;
            aload 1 /* logger */
            invokevirtual org.apache.cassandra.utils.EstimatedHistogram.log:(Lorg/slf4j/Logger;)V
        end local 2 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 266
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 270
            return
        end local 1 // org.slf4j.Logger logger
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    5     1  logger  Lorg/slf4j/Logger;
            2    3     2    tree  Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
        Name  Flags
      logger  

  public void logRowSizePerLeaf(org.slf4j.Logger);
    descriptor: (Lorg/slf4j/Logger;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.slf4j.Logger logger
         0: .line 279
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 3
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.slf4j.Logger top java.util.Iterator
      StackMap stack:
         1: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 2 /* tree */
        start local 2 // org.apache.cassandra.utils.MerkleTree tree
         2: .line 281
            aload 2 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTree.histogramOfRowSizePerLeaf:()Lorg/apache/cassandra/utils/EstimatedHistogram;
            aload 1 /* logger */
            invokevirtual org.apache.cassandra.utils.EstimatedHistogram.log:(Lorg/slf4j/Logger;)V
        end local 2 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 279
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 1
         4: .line 283
            return
        end local 1 // org.slf4j.Logger logger
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lorg/apache/cassandra/utils/MerkleTrees;
            0    5     1  logger  Lorg/slf4j/Logger;
            2    3     2    tree  Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
        Name  Flags
      logger  

  public byte[] hash(org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>);
    descriptor: (Lorg/apache/cassandra/dht/Range;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=7, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
        start local 1 // org.apache.cassandra.dht.Range range
         0: .line 288
            new java.io.ByteArrayOutputStream
            dup
            invokespecial java.io.ByteArrayOutputStream.<init>:()V
            astore 2 /* baos */
        start local 2 // java.io.ByteArrayOutputStream baos
         1: .line 289
            iconst_0
            istore 3 /* hashed */
        start local 3 // boolean hashed
         2: .line 293
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.keySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            astore 5
            goto 9
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.apache.cassandra.dht.Range java.io.ByteArrayOutputStream int top java.util.Iterator
      StackMap stack:
         3: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.dht.Range
            astore 4 /* rt */
        start local 4 // org.apache.cassandra.dht.Range rt
         4: .line 295
            aload 4 /* rt */
            aload 1 /* range */
            invokevirtual org.apache.cassandra.dht.Range.intersects:(Lorg/apache/cassandra/dht/Range;)Z
            ifeq 9
         5: .line 297
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            aload 4 /* rt */
            invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            aload 1 /* range */
            invokevirtual org.apache.cassandra.utils.MerkleTree.hash:(Lorg/apache/cassandra/dht/Range;)[B
            astore 6 /* bytes */
        start local 6 // byte[] bytes
         6: .line 298
            aload 6 /* bytes */
            ifnull 9
         7: .line 300
            aload 2 /* baos */
            aload 6 /* bytes */
            invokevirtual java.io.ByteArrayOutputStream.write:([B)V
         8: .line 301
            iconst_1
            istore 3 /* hashed */
        end local 6 // byte[] bytes
        end local 4 // org.apache.cassandra.dht.Range rt
         9: .line 293
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
        10: .line 305
            goto 13
        11: .line 306
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.apache.cassandra.dht.Range java.io.ByteArrayOutputStream int
      StackMap stack: java.io.IOException
            pop
        12: .line 308
            new java.lang.RuntimeException
            dup
            ldc "Unable to append merkle tree hash to result"
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        13: .line 311
      StackMap locals:
      StackMap stack:
            iload 3 /* hashed */
            ifeq 14
            aload 2 /* baos */
            invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
            goto 15
      StackMap locals:
      StackMap stack:
        14: aconst_null
      StackMap locals:
      StackMap stack: byte[]
        15: areturn
        end local 3 // boolean hashed
        end local 2 // java.io.ByteArrayOutputStream baos
        end local 1 // org.apache.cassandra.dht.Range range
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   16     0    this  Lorg/apache/cassandra/utils/MerkleTrees;
            0   16     1   range  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
            1   16     2    baos  Ljava/io/ByteArrayOutputStream;
            2   16     3  hashed  Z
            4    9     4      rt  Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;
            6    9     6   bytes  [B
      Exception table:
        from    to  target  type
           2    10      11  Class java.io.IOException
    Signature: (Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;)[B
    RuntimeInvisibleAnnotations: 
      com.google.common.annotations.VisibleForTesting()
    RuntimeInvisibleTypeAnnotations: 
      METHOD_RETURN, location=[ARRAY_ELEMENT]
        com.google.common.annotations.VisibleForTesting()
    MethodParameters:
       Name  Flags
      range  

  public java.util.Iterator<java.util.Map$Entry<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>, org.apache.cassandra.utils.MerkleTree>> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 319
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.entrySet:()Ljava/util/Set;
            invokeinterface java.util.Set.iterator:()Ljava/util/Iterator;
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTrees;
    Signature: ()Ljava/util/Iterator<Ljava/util/Map$Entry<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;Lorg/apache/cassandra/utils/MerkleTree;>;>;

  public long rowCount();
    descriptor: ()J
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=5, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTrees this
         0: .line 324
            lconst_0
            lstore 1 /* totalCount */
        start local 1 // long totalCount
         1: .line 325
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.apache.cassandra.utils.MerkleTrees long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 3 /* tree */
        start local 3 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 327
            lload 1 /* totalCount */
            aload 3 /* tree */
            invokevirtual org.apache.cassandra.utils.MerkleTree.rowCount:()J
            ladd
            lstore 1 /* totalCount */
        end local 3 // org.apache.cassandra.utils.MerkleTree tree
         4: .line 325
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 329
            lload 1 /* totalCount */
            lreturn
        end local 1 // long totalCount
        end local 0 // org.apache.cassandra.utils.MerkleTrees this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    6     0        this  Lorg/apache/cassandra/utils/MerkleTrees;
            1    6     1  totalCount  J
            3    4     3        tree  Lorg/apache/cassandra/utils/MerkleTree;

  public static java.util.List<org.apache.cassandra.dht.Range<org.apache.cassandra.dht.Token>> difference(org.apache.cassandra.utils.MerkleTrees, org.apache.cassandra.utils.MerkleTrees);
    descriptor: (Lorg/apache/cassandra/utils/MerkleTrees;Lorg/apache/cassandra/utils/MerkleTrees;)Ljava/util/List;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTrees ltree
        start local 1 // org.apache.cassandra.utils.MerkleTrees rtree
         0: .line 380
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 2 /* differences */
        start local 2 // java.util.List differences
         1: .line 381
            aload 0 /* ltree */
            getfield org.apache.cassandra.utils.MerkleTrees.merkleTrees:Ljava/util/Map;
            invokeinterface java.util.Map.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 4
      StackMap locals: org.apache.cassandra.utils.MerkleTrees org.apache.cassandra.utils.MerkleTrees java.util.List top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree
            astore 3 /* tree */
        start local 3 // org.apache.cassandra.utils.MerkleTree tree
         3: .line 383
            aload 2 /* differences */
            aload 3 /* tree */
            aload 1 /* rtree */
            aload 3 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            invokevirtual org.apache.cassandra.utils.MerkleTrees.getMerkleTree:(Lorg/apache/cassandra/dht/Range;)Lorg/apache/cassandra/utils/MerkleTree;
            invokestatic org.apache.cassandra.utils.MerkleTree.difference:(Lorg/apache/cassandra/utils/MerkleTree;Lorg/apache/cassandra/utils/MerkleTree;)Ljava/util/List;
            invokeinterface java.util.List.addAll:(Ljava/util/Collection;)Z
            pop
        end local 3 // org.apache.cassandra.utils.MerkleTree tree
         4: .line 381
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         5: .line 385
            aload 2 /* differences */
            areturn
        end local 2 // java.util.List differences
        end local 1 // org.apache.cassandra.utils.MerkleTrees rtree
        end local 0 // org.apache.cassandra.utils.MerkleTrees ltree
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    6     0        ltree  Lorg/apache/cassandra/utils/MerkleTrees;
            0    6     1        rtree  Lorg/apache/cassandra/utils/MerkleTrees;
            1    6     2  differences  Ljava/util/List<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
            3    4     3         tree  Lorg/apache/cassandra/utils/MerkleTree;
    Signature: (Lorg/apache/cassandra/utils/MerkleTrees;Lorg/apache/cassandra/utils/MerkleTrees;)Ljava/util/List<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;>;
    MethodParameters:
       Name  Flags
      ltree  
      rtree  
}
Signature: Ljava/lang/Object;Ljava/lang/Iterable<Ljava/util/Map$Entry<Lorg/apache/cassandra/dht/Range<Lorg/apache/cassandra/dht/Token;>;Lorg/apache/cassandra/utils/MerkleTree;>;>;
SourceFile: "MerkleTrees.java"
NestMembers:
  org.apache.cassandra.utils.MerkleTrees$MerkleTreesSerializer  org.apache.cassandra.utils.MerkleTrees$TokenRangeComparator  org.apache.cassandra.utils.MerkleTrees$TreeRangeIterator
InnerClasses:
  public abstract Entry = java.util.Map$Entry of java.util.Map
  public TreeRange = org.apache.cassandra.utils.MerkleTree$TreeRange of org.apache.cassandra.utils.MerkleTree
  public MerkleTreesSerializer = org.apache.cassandra.utils.MerkleTrees$MerkleTreesSerializer of org.apache.cassandra.utils.MerkleTrees
  private TokenRangeComparator = org.apache.cassandra.utils.MerkleTrees$TokenRangeComparator of org.apache.cassandra.utils.MerkleTrees
  public TreeRangeIterator = org.apache.cassandra.utils.MerkleTrees$TreeRangeIterator of org.apache.cassandra.utils.MerkleTrees