public class org.apache.cassandra.utils.MerkleTree$TreeRangeIterator extends org.apache.cassandra.utils.AbstractIterator<org.apache.cassandra.utils.MerkleTree$TreeRange> implements java.lang.Iterable<org.apache.cassandra.utils.MerkleTree$TreeRange>, com.google.common.collect.PeekingIterator<org.apache.cassandra.utils.MerkleTree$TreeRange>
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: org.apache.cassandra.utils.MerkleTree$TreeRangeIterator
  super_class: org.apache.cassandra.utils.AbstractIterator
{
  private final java.util.ArrayDeque<org.apache.cassandra.utils.MerkleTree$TreeRange> tovisit;
    descriptor: Ljava/util/ArrayDeque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayDeque<Lorg/apache/cassandra/utils/MerkleTree$TreeRange;>;

  private final org.apache.cassandra.utils.MerkleTree tree;
    descriptor: Lorg/apache/cassandra/utils/MerkleTree;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  void <init>(org.apache.cassandra.utils.MerkleTree);
    descriptor: (Lorg/apache/cassandra/utils/MerkleTree;)V
    flags: (0x0000) 
    Code:
      stack=8, locals=2, args_size=2
        start local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
        start local 1 // org.apache.cassandra.utils.MerkleTree tree
         0: .line 742
            aload 0 /* this */
            invokespecial org.apache.cassandra.utils.AbstractIterator.<init>:()V
         1: .line 744
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            invokespecial java.util.ArrayDeque.<init>:()V
            putfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
         2: .line 745
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            new org.apache.cassandra.utils.MerkleTree$TreeRange
            dup
            aload 1 /* tree */
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            getfield org.apache.cassandra.dht.Range.left:Lorg/apache/cassandra/dht/RingPosition;
            checkcast org.apache.cassandra.dht.Token
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.fullRange:Lorg/apache/cassandra/dht/Range;
            getfield org.apache.cassandra.dht.Range.right:Lorg/apache/cassandra/dht/RingPosition;
            checkcast org.apache.cassandra.dht.Token
            iconst_0
            aload 1 /* tree */
            getfield org.apache.cassandra.utils.MerkleTree.root:Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            invokespecial org.apache.cassandra.utils.MerkleTree$TreeRange.<init>:(Lorg/apache/cassandra/utils/MerkleTree;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;BLorg/apache/cassandra/utils/MerkleTree$Hashable;)V
            invokevirtual java.util.ArrayDeque.add:(Ljava/lang/Object;)Z
            pop
         3: .line 746
            aload 0 /* this */
            aload 1 /* tree */
            putfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tree:Lorg/apache/cassandra/utils/MerkleTree;
         4: .line 747
            return
        end local 1 // org.apache.cassandra.utils.MerkleTree tree
        end local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Lorg/apache/cassandra/utils/MerkleTree$TreeRangeIterator;
            0    5     1  tree  Lorg/apache/cassandra/utils/MerkleTree;
    MethodParameters:
      Name  Flags
      tree  

  public org.apache.cassandra.utils.MerkleTree$TreeRange computeNext();
    descriptor: ()Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=5, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
         0: .line 756
            goto 15
         1: .line 758
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.pop:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree$TreeRange
            astore 1 /* active */
        start local 1 // org.apache.cassandra.utils.MerkleTree$TreeRange active
         2: .line 760
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.hashable:Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            instanceof org.apache.cassandra.utils.MerkleTree$Leaf
            ifeq 6
         3: .line 763
            aload 1 /* active */
            invokevirtual org.apache.cassandra.utils.MerkleTree$TreeRange.isWrapAround:()Z
            ifeq 5
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.isEmpty:()Z
            ifne 5
         4: .line 765
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            aload 1 /* active */
            invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
         5: .line 766
      StackMap locals: org.apache.cassandra.utils.MerkleTree$TreeRange
      StackMap stack:
            aload 1 /* active */
            areturn
         6: .line 769
      StackMap locals:
      StackMap stack:
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.hashable:Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            checkcast org.apache.cassandra.utils.MerkleTree$Inner
            astore 2 /* node */
        start local 2 // org.apache.cassandra.utils.MerkleTree$Inner node
         7: .line 770
            new org.apache.cassandra.utils.MerkleTree$TreeRange
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tree:Lorg/apache/cassandra/utils/MerkleTree;
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.left:Lorg/apache/cassandra/dht/RingPosition;
            checkcast org.apache.cassandra.dht.Token
            aload 2 /* node */
            getfield org.apache.cassandra.utils.MerkleTree$Inner.token:Lorg/apache/cassandra/dht/Token;
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.depth:B
            invokestatic org.apache.cassandra.utils.MerkleTree.inc:(B)B
            aload 2 /* node */
            getfield org.apache.cassandra.utils.MerkleTree$Inner.lchild:Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            invokespecial org.apache.cassandra.utils.MerkleTree$TreeRange.<init>:(Lorg/apache/cassandra/utils/MerkleTree;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;BLorg/apache/cassandra/utils/MerkleTree$Hashable;)V
            astore 3 /* left */
        start local 3 // org.apache.cassandra.utils.MerkleTree$TreeRange left
         8: .line 771
            new org.apache.cassandra.utils.MerkleTree$TreeRange
            dup
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tree:Lorg/apache/cassandra/utils/MerkleTree;
            aload 2 /* node */
            getfield org.apache.cassandra.utils.MerkleTree$Inner.token:Lorg/apache/cassandra/dht/Token;
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.right:Lorg/apache/cassandra/dht/RingPosition;
            checkcast org.apache.cassandra.dht.Token
            aload 1 /* active */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRange.depth:B
            invokestatic org.apache.cassandra.utils.MerkleTree.inc:(B)B
            aload 2 /* node */
            getfield org.apache.cassandra.utils.MerkleTree$Inner.rchild:Lorg/apache/cassandra/utils/MerkleTree$Hashable;
            invokespecial org.apache.cassandra.utils.MerkleTree$TreeRange.<init>:(Lorg/apache/cassandra/utils/MerkleTree;Lorg/apache/cassandra/dht/Token;Lorg/apache/cassandra/dht/Token;BLorg/apache/cassandra/utils/MerkleTree$Hashable;)V
            astore 4 /* right */
        start local 4 // org.apache.cassandra.utils.MerkleTree$TreeRange right
         9: .line 773
            aload 4 /* right */
            invokevirtual org.apache.cassandra.utils.MerkleTree$TreeRange.isWrapAround:()Z
            ifeq 13
        10: .line 776
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            aload 3 /* left */
            invokevirtual java.util.ArrayDeque.addLast:(Ljava/lang/Object;)V
        11: .line 777
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            aload 4 /* right */
            invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
        12: .line 778
            goto 15
        13: .line 782
      StackMap locals: org.apache.cassandra.utils.MerkleTree$Inner org.apache.cassandra.utils.MerkleTree$TreeRange org.apache.cassandra.utils.MerkleTree$TreeRange
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            aload 4 /* right */
            invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
        14: .line 783
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            aload 3 /* left */
            invokevirtual java.util.ArrayDeque.addFirst:(Ljava/lang/Object;)V
        end local 4 // org.apache.cassandra.utils.MerkleTree$TreeRange right
        end local 3 // org.apache.cassandra.utils.MerkleTree$TreeRange left
        end local 2 // org.apache.cassandra.utils.MerkleTree$Inner node
        end local 1 // org.apache.cassandra.utils.MerkleTree$TreeRange active
        15: .line 756
      StackMap locals: org.apache.cassandra.utils.MerkleTree$TreeRangeIterator
      StackMap stack:
            aload 0 /* this */
            getfield org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.tovisit:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.isEmpty:()Z
            ifeq 1
        16: .line 786
            aload 0 /* this */
            invokevirtual org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.endOfData:()Ljava/lang/Object;
            checkcast org.apache.cassandra.utils.MerkleTree$TreeRange
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0   17     0    this  Lorg/apache/cassandra/utils/MerkleTree$TreeRangeIterator;
            2   15     1  active  Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
            7   15     2    node  Lorg/apache/cassandra/utils/MerkleTree$Inner;
            8   15     3    left  Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
            9   15     4   right  Lorg/apache/cassandra/utils/MerkleTree$TreeRange;

  public java.util.Iterator<org.apache.cassandra.utils.MerkleTree$TreeRange> iterator();
    descriptor: ()Ljava/util/Iterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
         0: .line 791
            aload 0 /* this */
            areturn
        end local 0 // org.apache.cassandra.utils.MerkleTree$TreeRangeIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lorg/apache/cassandra/utils/MerkleTree$TreeRangeIterator;
    Signature: ()Ljava/util/Iterator<Lorg/apache/cassandra/utils/MerkleTree$TreeRange;>;

  public java.lang.Object computeNext();
    descriptor: ()Ljava/lang/Object;
    flags: (0x1041) ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
    Code:
      stack=1, locals=1, args_size=1
         0: .line 1
            aload 0
            invokevirtual org.apache.cassandra.utils.MerkleTree$TreeRangeIterator.computeNext:()Lorg/apache/cassandra/utils/MerkleTree$TreeRange;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Lorg/apache/cassandra/utils/AbstractIterator<Lorg/apache/cassandra/utils/MerkleTree$TreeRange;>;Ljava/lang/Iterable<Lorg/apache/cassandra/utils/MerkleTree$TreeRange;>;Lcom/google/common/collect/PeekingIterator<Lorg/apache/cassandra/utils/MerkleTree$TreeRange;>;
SourceFile: "MerkleTree.java"
NestHost: org.apache.cassandra.utils.MerkleTree
InnerClasses:
  abstract Hashable = org.apache.cassandra.utils.MerkleTree$Hashable of org.apache.cassandra.utils.MerkleTree
  Inner = org.apache.cassandra.utils.MerkleTree$Inner of org.apache.cassandra.utils.MerkleTree
  Leaf = org.apache.cassandra.utils.MerkleTree$Leaf of org.apache.cassandra.utils.MerkleTree
  public TreeRange = org.apache.cassandra.utils.MerkleTree$TreeRange of org.apache.cassandra.utils.MerkleTree
  public TreeRangeIterator = org.apache.cassandra.utils.MerkleTree$TreeRangeIterator of org.apache.cassandra.utils.MerkleTree