final class com.google.protobuf.RopeByteString$PieceIterator implements java.util.Iterator<com.google.protobuf.ByteString$LeafByteString>
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.protobuf.RopeByteString$PieceIterator
  super_class: java.lang.Object
{
  private final java.util.ArrayDeque<com.google.protobuf.RopeByteString> breadCrumbs;
    descriptor: Ljava/util/ArrayDeque;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL
    Signature: Ljava/util/ArrayDeque<Lcom/google/protobuf/RopeByteString;>;

  private com.google.protobuf.ByteString$LeafByteString next;
    descriptor: Lcom/google/protobuf/ByteString$LeafByteString;
    flags: (0x0002) ACC_PRIVATE

  private void <init>(com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=3, args_size=2
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
        start local 1 // com.google.protobuf.ByteString root
         0: .line 719
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 720
            aload 1 /* root */
            instanceof com.google.protobuf.RopeByteString
            ifeq 7
         2: .line 721
            aload 1 /* root */
            checkcast com.google.protobuf.RopeByteString
            astore 2 /* rbs */
        start local 2 // com.google.protobuf.RopeByteString rbs
         3: .line 722
            aload 0 /* this */
            new java.util.ArrayDeque
            dup
            aload 2 /* rbs */
            invokevirtual com.google.protobuf.RopeByteString.getTreeDepth:()I
            invokespecial java.util.ArrayDeque.<init>:(I)V
            putfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
         4: .line 723
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
            aload 2 /* rbs */
            invokevirtual java.util.ArrayDeque.push:(Ljava/lang/Object;)V
         5: .line 724
            aload 0 /* this */
            aload 0 /* this */
            aload 2 /* rbs */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.RopeByteString$PieceIterator.getLeafByLeft:(Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString$LeafByteString;
            putfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
        end local 2 // com.google.protobuf.RopeByteString rbs
         6: .line 725
            goto 9
         7: .line 726
      StackMap locals: com.google.protobuf.RopeByteString$PieceIterator com.google.protobuf.ByteString
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
         8: .line 727
            aload 0 /* this */
            aload 1 /* root */
            checkcast com.google.protobuf.ByteString$LeafByteString
            putfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
         9: .line 729
      StackMap locals:
      StackMap stack:
            return
        end local 1 // com.google.protobuf.ByteString root
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   10     0  this  Lcom/google/protobuf/RopeByteString$PieceIterator;
            0   10     1  root  Lcom/google/protobuf/ByteString;
            3    6     2   rbs  Lcom/google/protobuf/RopeByteString;
    MethodParameters:
      Name  Flags
      root  

  private com.google.protobuf.ByteString$LeafByteString getLeafByLeft(com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString$LeafByteString;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=2
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
        start local 1 // com.google.protobuf.ByteString root
         0: .line 732
            aload 1 /* root */
            astore 2 /* pos */
        start local 2 // com.google.protobuf.ByteString pos
         1: .line 733
            goto 5
         2: .line 734
      StackMap locals: com.google.protobuf.ByteString
      StackMap stack:
            aload 2 /* pos */
            checkcast com.google.protobuf.RopeByteString
            astore 3 /* rbs */
        start local 3 // com.google.protobuf.RopeByteString rbs
         3: .line 735
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
            aload 3 /* rbs */
            invokevirtual java.util.ArrayDeque.push:(Ljava/lang/Object;)V
         4: .line 736
            aload 3 /* rbs */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            astore 2 /* pos */
        end local 3 // com.google.protobuf.RopeByteString rbs
         5: .line 733
      StackMap locals:
      StackMap stack:
            aload 2 /* pos */
            instanceof com.google.protobuf.RopeByteString
            ifne 2
         6: .line 738
            aload 2 /* pos */
            checkcast com.google.protobuf.ByteString$LeafByteString
            areturn
        end local 2 // com.google.protobuf.ByteString pos
        end local 1 // com.google.protobuf.ByteString root
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lcom/google/protobuf/RopeByteString$PieceIterator;
            0    7     1  root  Lcom/google/protobuf/ByteString;
            1    7     2   pos  Lcom/google/protobuf/ByteString;
            3    5     3   rbs  Lcom/google/protobuf/RopeByteString;
    MethodParameters:
      Name  Flags
      root  

  private com.google.protobuf.ByteString$LeafByteString getNextNonEmptyLeaf();
    descriptor: ()Lcom/google/protobuf/ByteString$LeafByteString;
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
         0: .line 745
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
            ifnull 1
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.isEmpty:()Z
            ifeq 2
         1: .line 746
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         2: .line 748
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.breadCrumbs:Ljava/util/ArrayDeque;
            invokevirtual java.util.ArrayDeque.pop:()Ljava/lang/Object;
            checkcast com.google.protobuf.RopeByteString
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.RopeByteString$PieceIterator.getLeafByLeft:(Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString$LeafByteString;
            astore 1 /* result */
        start local 1 // com.google.protobuf.ByteString$LeafByteString result
         3: .line 749
            aload 1 /* result */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.isEmpty:()Z
            ifne 0
         4: .line 750
            aload 1 /* result */
            areturn
        end local 1 // com.google.protobuf.ByteString$LeafByteString result
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/google/protobuf/RopeByteString$PieceIterator;
            3    5     1  result  Lcom/google/protobuf/ByteString$LeafByteString;

  public boolean hasNext();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
         0: .line 758
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
            ifnull 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/protobuf/RopeByteString$PieceIterator;

  public com.google.protobuf.ByteString$LeafByteString next();
    descriptor: ()Lcom/google/protobuf/ByteString$LeafByteString;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
         0: .line 768
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
            ifnonnull 2
         1: .line 769
            new java.util.NoSuchElementException
            dup
            invokespecial java.util.NoSuchElementException.<init>:()V
            athrow
         2: .line 771
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
            astore 1 /* result */
        start local 1 // com.google.protobuf.ByteString$LeafByteString result
         3: .line 772
            aload 0 /* this */
            aload 0 /* this */
            invokevirtual com.google.protobuf.RopeByteString$PieceIterator.getNextNonEmptyLeaf:()Lcom/google/protobuf/ByteString$LeafByteString;
            putfield com.google.protobuf.RopeByteString$PieceIterator.next:Lcom/google/protobuf/ByteString$LeafByteString;
         4: .line 773
            aload 1 /* result */
            areturn
        end local 1 // com.google.protobuf.ByteString$LeafByteString result
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/google/protobuf/RopeByteString$PieceIterator;
            3    5     1  result  Lcom/google/protobuf/ByteString$LeafByteString;

  public void remove();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString$PieceIterator this
         0: .line 778
            new java.lang.UnsupportedOperationException
            dup
            invokespecial java.lang.UnsupportedOperationException.<init>:()V
            athrow
        end local 0 // com.google.protobuf.RopeByteString$PieceIterator this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString$PieceIterator;

  public java.lang.Object next();
    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 com.google.protobuf.RopeByteString$PieceIterator.next:()Lcom/google/protobuf/ByteString$LeafByteString;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
Signature: Ljava/lang/Object;Ljava/util/Iterator<Lcom/google/protobuf/ByteString$LeafByteString;>;
SourceFile: "RopeByteString.java"
NestHost: com.google.protobuf.RopeByteString
InnerClasses:
  abstract LeafByteString = com.google.protobuf.ByteString$LeafByteString of com.google.protobuf.ByteString
  private final PieceIterator = com.google.protobuf.RopeByteString$PieceIterator of com.google.protobuf.RopeByteString