final class com.google.protobuf.RopeByteString extends com.google.protobuf.ByteString
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.protobuf.RopeByteString
  super_class: com.google.protobuf.ByteString
{
  static final int[] minLengthByDepth;
    descriptor: [I
    flags: (0x0018) ACC_STATIC, ACC_FINAL

  private final int totalLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.protobuf.ByteString left;
    descriptor: Lcom/google/protobuf/ByteString;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final com.google.protobuf.ByteString right;
    descriptor: Lcom/google/protobuf/ByteString;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int leftLength;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int treeDepth;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private static final long serialVersionUID;
    descriptor: J
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 83
            bipush 47
            newarray 10
            dup
            iconst_0
         1: .line 84
            iconst_1
            iastore
            dup
            iconst_1
         2: .line 85
            iconst_1
            iastore
            dup
            iconst_2
         3: .line 86
            iconst_2
            iastore
            dup
            iconst_3
         4: .line 87
            iconst_3
            iastore
            dup
            iconst_4
         5: .line 88
            iconst_5
            iastore
            dup
            iconst_5
         6: .line 89
            bipush 8
            iastore
            dup
            bipush 6
         7: .line 90
            bipush 13
            iastore
            dup
            bipush 7
         8: .line 91
            bipush 21
            iastore
            dup
            bipush 8
         9: .line 92
            bipush 34
            iastore
            dup
            bipush 9
        10: .line 93
            bipush 55
            iastore
            dup
            bipush 10
        11: .line 94
            bipush 89
            iastore
            dup
            bipush 11
        12: .line 95
            sipush 144
            iastore
            dup
            bipush 12
        13: .line 96
            sipush 233
            iastore
            dup
            bipush 13
        14: .line 97
            sipush 377
            iastore
            dup
            bipush 14
        15: .line 98
            sipush 610
            iastore
            dup
            bipush 15
        16: .line 99
            sipush 987
            iastore
            dup
            bipush 16
        17: .line 100
            sipush 1597
            iastore
            dup
            bipush 17
        18: .line 101
            sipush 2584
            iastore
            dup
            bipush 18
        19: .line 102
            sipush 4181
            iastore
            dup
            bipush 19
        20: .line 103
            sipush 6765
            iastore
            dup
            bipush 20
        21: .line 104
            sipush 10946
            iastore
            dup
            bipush 21
        22: .line 105
            sipush 17711
            iastore
            dup
            bipush 22
        23: .line 106
            sipush 28657
            iastore
            dup
            bipush 23
        24: .line 107
            ldc 46368
            iastore
            dup
            bipush 24
        25: .line 108
            ldc 75025
            iastore
            dup
            bipush 25
        26: .line 109
            ldc 121393
            iastore
            dup
            bipush 26
        27: .line 110
            ldc 196418
            iastore
            dup
            bipush 27
        28: .line 111
            ldc 317811
            iastore
            dup
            bipush 28
        29: .line 112
            ldc 514229
            iastore
            dup
            bipush 29
        30: .line 113
            ldc 832040
            iastore
            dup
            bipush 30
        31: .line 114
            ldc 1346269
            iastore
            dup
            bipush 31
        32: .line 115
            ldc 2178309
            iastore
            dup
            bipush 32
        33: .line 116
            ldc 3524578
            iastore
            dup
            bipush 33
        34: .line 117
            ldc 5702887
            iastore
            dup
            bipush 34
        35: .line 118
            ldc 9227465
            iastore
            dup
            bipush 35
        36: .line 119
            ldc 14930352
            iastore
            dup
            bipush 36
        37: .line 120
            ldc 24157817
            iastore
            dup
            bipush 37
        38: .line 121
            ldc 39088169
            iastore
            dup
            bipush 38
        39: .line 122
            ldc 63245986
            iastore
            dup
            bipush 39
        40: .line 123
            ldc 102334155
            iastore
            dup
            bipush 40
        41: .line 124
            ldc 165580141
            iastore
            dup
            bipush 41
        42: .line 125
            ldc 267914296
            iastore
            dup
            bipush 42
        43: .line 126
            ldc 433494437
            iastore
            dup
            bipush 43
        44: .line 127
            ldc 701408733
            iastore
            dup
            bipush 44
        45: .line 128
            ldc 1134903170
            iastore
            dup
            bipush 45
        46: .line 129
            ldc 1836311903
            iastore
            dup
            bipush 46
        47: .line 130
            ldc 2147483647
            iastore
        48: .line 83
            putstatic com.google.protobuf.RopeByteString.minLengthByDepth:[I
        49: .line 785
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private void <init>(com.google.protobuf.ByteString, com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // com.google.protobuf.ByteString left
        start local 2 // com.google.protobuf.ByteString right
         0: .line 146
            aload 0 /* this */
            invokespecial com.google.protobuf.ByteString.<init>:()V
         1: .line 147
            aload 0 /* this */
            aload 1 /* left */
            putfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
         2: .line 148
            aload 0 /* this */
            aload 2 /* right */
            putfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
         3: .line 149
            aload 0 /* this */
            aload 1 /* left */
            invokevirtual com.google.protobuf.ByteString.size:()I
            putfield com.google.protobuf.RopeByteString.leftLength:I
         4: .line 150
            aload 0 /* this */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            aload 2 /* right */
            invokevirtual com.google.protobuf.ByteString.size:()I
            iadd
            putfield com.google.protobuf.RopeByteString.totalLength:I
         5: .line 151
            aload 0 /* this */
            aload 1 /* left */
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            aload 2 /* right */
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            invokestatic java.lang.Math.max:(II)I
            iconst_1
            iadd
            putfield com.google.protobuf.RopeByteString.treeDepth:I
         6: .line 152
            return
        end local 2 // com.google.protobuf.ByteString right
        end local 1 // com.google.protobuf.ByteString left
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    7     0   this  Lcom/google/protobuf/RopeByteString;
            0    7     1   left  Lcom/google/protobuf/ByteString;
            0    7     2  right  Lcom/google/protobuf/ByteString;
    MethodParameters:
       Name  Flags
      left   
      right  

  static com.google.protobuf.ByteString concatenate(com.google.protobuf.ByteString, com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=5, args_size=2
        start local 0 // com.google.protobuf.ByteString left
        start local 1 // com.google.protobuf.ByteString right
         0: .line 168
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.size:()I
            ifne 2
         1: .line 169
            aload 0 /* left */
            areturn
         2: .line 172
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            invokevirtual com.google.protobuf.ByteString.size:()I
            ifne 4
         3: .line 173
            aload 1 /* right */
            areturn
         4: .line 176
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            invokevirtual com.google.protobuf.ByteString.size:()I
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.size:()I
            iadd
            istore 2 /* newLength */
        start local 2 // int newLength
         5: .line 177
            iload 2 /* newLength */
            sipush 128
            if_icmpge 7
         6: .line 180
            aload 0 /* left */
            aload 1 /* right */
            invokestatic com.google.protobuf.RopeByteString.concatenateBytes:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString;
            areturn
         7: .line 183
      StackMap locals: int
      StackMap stack:
            aload 0 /* left */
            instanceof com.google.protobuf.RopeByteString
            ifeq 16
         8: .line 184
            aload 0 /* left */
            checkcast com.google.protobuf.RopeByteString
            astore 3 /* leftRope */
        start local 3 // com.google.protobuf.RopeByteString leftRope
         9: .line 185
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.ByteString.size:()I
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.size:()I
            iadd
            sipush 128
            if_icmpge 12
        10: .line 196
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* right */
            invokestatic com.google.protobuf.RopeByteString.concatenateBytes:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString;
            astore 4 /* newRight */
        start local 4 // com.google.protobuf.ByteString newRight
        11: .line 197
            new com.google.protobuf.RopeByteString
            dup
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 4 /* newRight */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            areturn
        end local 4 // com.google.protobuf.ByteString newRight
        12: .line 200
      StackMap locals: com.google.protobuf.RopeByteString
      StackMap stack:
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            if_icmple 16
        13: .line 201
            aload 3 /* leftRope */
            invokevirtual com.google.protobuf.RopeByteString.getTreeDepth:()I
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            if_icmple 16
        14: .line 207
            new com.google.protobuf.RopeByteString
            dup
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* right */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            astore 4 /* newRight */
        start local 4 // com.google.protobuf.ByteString newRight
        15: .line 208
            new com.google.protobuf.RopeByteString
            dup
            aload 3 /* leftRope */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 4 /* newRight */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            areturn
        end local 4 // com.google.protobuf.ByteString newRight
        end local 3 // com.google.protobuf.RopeByteString leftRope
        16: .line 213
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.getTreeDepth:()I
            invokestatic java.lang.Math.max:(II)I
            iconst_1
            iadd
            istore 3 /* newDepth */
        start local 3 // int newDepth
        17: .line 214
            iload 2 /* newLength */
            getstatic com.google.protobuf.RopeByteString.minLengthByDepth:[I
            iload 3 /* newDepth */
            iaload
            if_icmplt 19
        18: .line 216
            new com.google.protobuf.RopeByteString
            dup
            aload 0 /* left */
            aload 1 /* right */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            areturn
        19: .line 219
      StackMap locals: int
      StackMap stack:
            new com.google.protobuf.RopeByteString$Balancer
            dup
            invokespecial com.google.protobuf.RopeByteString$Balancer.<init>:()V
            aload 0 /* left */
            aload 1 /* right */
            invokevirtual com.google.protobuf.RopeByteString$Balancer.balance:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString;
            areturn
        end local 3 // int newDepth
        end local 2 // int newLength
        end local 1 // com.google.protobuf.ByteString right
        end local 0 // com.google.protobuf.ByteString left
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   20     0       left  Lcom/google/protobuf/ByteString;
            0   20     1      right  Lcom/google/protobuf/ByteString;
            5   20     2  newLength  I
            9   16     3   leftRope  Lcom/google/protobuf/RopeByteString;
           11   12     4   newRight  Lcom/google/protobuf/ByteString;
           15   16     4   newRight  Lcom/google/protobuf/ByteString;
           17   20     3   newDepth  I
    MethodParameters:
       Name  Flags
      left   
      right  

  private static com.google.protobuf.ByteString concatenateBytes(com.google.protobuf.ByteString, com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/ByteString;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // com.google.protobuf.ByteString left
        start local 1 // com.google.protobuf.ByteString right
         0: .line 231
            aload 0 /* left */
            invokevirtual com.google.protobuf.ByteString.size:()I
            istore 2 /* leftSize */
        start local 2 // int leftSize
         1: .line 232
            aload 1 /* right */
            invokevirtual com.google.protobuf.ByteString.size:()I
            istore 3 /* rightSize */
        start local 3 // int rightSize
         2: .line 233
            iload 2 /* leftSize */
            iload 3 /* rightSize */
            iadd
            newarray 8
            astore 4 /* bytes */
        start local 4 // byte[] bytes
         3: .line 234
            aload 0 /* left */
            aload 4 /* bytes */
            iconst_0
            iconst_0
            iload 2 /* leftSize */
            invokevirtual com.google.protobuf.ByteString.copyTo:([BIII)V
         4: .line 235
            aload 1 /* right */
            aload 4 /* bytes */
            iconst_0
            iload 2 /* leftSize */
            iload 3 /* rightSize */
            invokevirtual com.google.protobuf.ByteString.copyTo:([BIII)V
         5: .line 236
            aload 4 /* bytes */
            invokestatic com.google.protobuf.ByteString.wrap:([B)Lcom/google/protobuf/ByteString;
            areturn
        end local 4 // byte[] bytes
        end local 3 // int rightSize
        end local 2 // int leftSize
        end local 1 // com.google.protobuf.ByteString right
        end local 0 // com.google.protobuf.ByteString left
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    6     0       left  Lcom/google/protobuf/ByteString;
            0    6     1      right  Lcom/google/protobuf/ByteString;
            1    6     2   leftSize  I
            2    6     3  rightSize  I
            3    6     4      bytes  [B
    MethodParameters:
       Name  Flags
      left   
      right  

  static com.google.protobuf.RopeByteString newInstanceForTest(com.google.protobuf.ByteString, com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)Lcom/google/protobuf/RopeByteString;
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.protobuf.ByteString left
        start local 1 // com.google.protobuf.ByteString right
         0: .line 250
            new com.google.protobuf.RopeByteString
            dup
            aload 0 /* left */
            aload 1 /* right */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            areturn
        end local 1 // com.google.protobuf.ByteString right
        end local 0 // com.google.protobuf.ByteString left
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   left  Lcom/google/protobuf/ByteString;
            0    1     1  right  Lcom/google/protobuf/ByteString;
    MethodParameters:
       Name  Flags
      left   
      right  

  public byte byteAt(int);
    descriptor: (I)B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // int index
         0: .line 264
            iload 1 /* index */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            invokestatic com.google.protobuf.RopeByteString.checkIndex:(II)V
         1: .line 265
            aload 0 /* this */
            iload 1 /* index */
            invokevirtual com.google.protobuf.RopeByteString.internalByteAt:(I)B
            ireturn
        end local 1 // int index
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/google/protobuf/RopeByteString;
            0    2     1  index  I
    MethodParameters:
       Name  Flags
      index  

  byte internalByteAt(int);
    descriptor: (I)B
    flags: (0x0000) 
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // int index
         0: .line 271
            iload 1 /* index */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpge 2
         1: .line 272
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* index */
            invokevirtual com.google.protobuf.ByteString.internalByteAt:(I)B
            ireturn
         2: .line 275
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 1 /* index */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            invokevirtual com.google.protobuf.ByteString.internalByteAt:(I)B
            ireturn
        end local 1 // int index
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Lcom/google/protobuf/RopeByteString;
            0    3     1  index  I
    MethodParameters:
       Name  Flags
      index  

  public int size();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 280
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            ireturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  public com.google.protobuf.ByteString$ByteIterator iterator();
    descriptor: ()Lcom/google/protobuf/ByteString$ByteIterator;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 285
            new com.google.protobuf.RopeByteString$1
            dup
            aload 0 /* this */
            invokespecial com.google.protobuf.RopeByteString$1.<init>:(Lcom/google/protobuf/RopeByteString;)V
            areturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  protected int getTreeDepth();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 319
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.treeDepth:I
            ireturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  protected boolean isBalanced();
    descriptor: ()Z
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 331
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            getstatic com.google.protobuf.RopeByteString.minLengthByDepth:[I
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.treeDepth:I
            iaload
            if_icmplt 1
            iconst_1
            ireturn
      StackMap locals:
      StackMap stack:
         1: iconst_0
            ireturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lcom/google/protobuf/RopeByteString;

  public com.google.protobuf.ByteString substring(int, int);
    descriptor: (II)Lcom/google/protobuf/ByteString;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=3
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // int beginIndex
        start local 2 // int endIndex
         0: .line 349
            iload 1 /* beginIndex */
            iload 2 /* endIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            invokestatic com.google.protobuf.RopeByteString.checkRange:(III)I
            istore 3 /* length */
        start local 3 // int length
         1: .line 351
            iload 3 /* length */
            ifne 3
         2: .line 353
            getstatic com.google.protobuf.ByteString.EMPTY:Lcom/google/protobuf/ByteString;
            areturn
         3: .line 356
      StackMap locals: int
      StackMap stack:
            iload 3 /* length */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            if_icmpne 5
         4: .line 358
            aload 0 /* this */
            areturn
         5: .line 362
      StackMap locals:
      StackMap stack:
            iload 2 /* endIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpgt 7
         6: .line 364
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* beginIndex */
            iload 2 /* endIndex */
            invokevirtual com.google.protobuf.ByteString.substring:(II)Lcom/google/protobuf/ByteString;
            areturn
         7: .line 367
      StackMap locals:
      StackMap stack:
            iload 1 /* beginIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmplt 9
         8: .line 369
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 1 /* beginIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            iload 2 /* endIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            invokevirtual com.google.protobuf.ByteString.substring:(II)Lcom/google/protobuf/ByteString;
            areturn
         9: .line 373
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* beginIndex */
            invokevirtual com.google.protobuf.ByteString.substring:(I)Lcom/google/protobuf/ByteString;
            astore 4 /* leftSub */
        start local 4 // com.google.protobuf.ByteString leftSub
        10: .line 374
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iconst_0
            iload 2 /* endIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            invokevirtual com.google.protobuf.ByteString.substring:(II)Lcom/google/protobuf/ByteString;
            astore 5 /* rightSub */
        start local 5 // com.google.protobuf.ByteString rightSub
        11: .line 378
            new com.google.protobuf.RopeByteString
            dup
            aload 4 /* leftSub */
            aload 5 /* rightSub */
            invokespecial com.google.protobuf.RopeByteString.<init>:(Lcom/google/protobuf/ByteString;Lcom/google/protobuf/ByteString;)V
            areturn
        end local 5 // com.google.protobuf.ByteString rightSub
        end local 4 // com.google.protobuf.ByteString leftSub
        end local 3 // int length
        end local 2 // int endIndex
        end local 1 // int beginIndex
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   12     0        this  Lcom/google/protobuf/RopeByteString;
            0   12     1  beginIndex  I
            0   12     2    endIndex  I
            1   12     3      length  I
           10   12     4     leftSub  Lcom/google/protobuf/ByteString;
           11   12     5    rightSub  Lcom/google/protobuf/ByteString;
    MethodParameters:
            Name  Flags
      beginIndex  
      endIndex    

  protected void copyToInternal(byte[], int, int, int);
    descriptor: ([BIII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // byte[] target
        start local 2 // int sourceOffset
        start local 3 // int targetOffset
        start local 4 // int numberToCopy
         0: .line 387
            iload 2 /* sourceOffset */
            iload 4 /* numberToCopy */
            iadd
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpgt 3
         1: .line 388
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            iload 2 /* sourceOffset */
            iload 3 /* targetOffset */
            iload 4 /* numberToCopy */
            invokevirtual com.google.protobuf.ByteString.copyToInternal:([BIII)V
         2: .line 389
            goto 9
      StackMap locals:
      StackMap stack:
         3: iload 2 /* sourceOffset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmplt 6
         4: .line 390
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            iload 2 /* sourceOffset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            iload 3 /* targetOffset */
            iload 4 /* numberToCopy */
            invokevirtual com.google.protobuf.ByteString.copyToInternal:([BIII)V
         5: .line 391
            goto 9
         6: .line 392
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            iload 2 /* sourceOffset */
            isub
            istore 5 /* leftLength */
        start local 5 // int leftLength
         7: .line 393
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            iload 2 /* sourceOffset */
            iload 3 /* targetOffset */
            iload 5 /* leftLength */
            invokevirtual com.google.protobuf.ByteString.copyToInternal:([BIII)V
         8: .line 394
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            iconst_0
            iload 3 /* targetOffset */
            iload 5 /* leftLength */
            iadd
            iload 4 /* numberToCopy */
            iload 5 /* leftLength */
            isub
            invokevirtual com.google.protobuf.ByteString.copyToInternal:([BIII)V
        end local 5 // int leftLength
         9: .line 396
      StackMap locals:
      StackMap stack:
            return
        end local 4 // int numberToCopy
        end local 3 // int targetOffset
        end local 2 // int sourceOffset
        end local 1 // byte[] target
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0          this  Lcom/google/protobuf/RopeByteString;
            0   10     1        target  [B
            0   10     2  sourceOffset  I
            0   10     3  targetOffset  I
            0   10     4  numberToCopy  I
            7    9     5    leftLength  I
    MethodParameters:
              Name  Flags
      target        
      sourceOffset  
      targetOffset  
      numberToCopy  

  public void copyTo(java.nio.ByteBuffer);
    descriptor: (Ljava/nio/ByteBuffer;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.nio.ByteBuffer target
         0: .line 400
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            invokevirtual com.google.protobuf.ByteString.copyTo:(Ljava/nio/ByteBuffer;)V
         1: .line 401
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* target */
            invokevirtual com.google.protobuf.ByteString.copyTo:(Ljava/nio/ByteBuffer;)V
         2: .line 402
            return
        end local 1 // java.nio.ByteBuffer target
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/google/protobuf/RopeByteString;
            0    3     1  target  Ljava/nio/ByteBuffer;
    MethodParameters:
        Name  Flags
      target  

  public java.nio.ByteBuffer asReadOnlyByteBuffer();
    descriptor: ()Ljava/nio/ByteBuffer;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 406
            aload 0 /* this */
            invokevirtual com.google.protobuf.RopeByteString.toByteArray:()[B
            invokestatic java.nio.ByteBuffer.wrap:([B)Ljava/nio/ByteBuffer;
            astore 1 /* byteBuffer */
        start local 1 // java.nio.ByteBuffer byteBuffer
         1: .line 407
            aload 1 /* byteBuffer */
            invokevirtual java.nio.ByteBuffer.asReadOnlyBuffer:()Ljava/nio/ByteBuffer;
            areturn
        end local 1 // java.nio.ByteBuffer byteBuffer
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/google/protobuf/RopeByteString;
            1    2     1  byteBuffer  Ljava/nio/ByteBuffer;

  public java.util.List<java.nio.ByteBuffer> asReadOnlyByteBufferList();
    descriptor: ()Ljava/util/List;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 414
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 1 /* result */
        start local 1 // java.util.List result
         1: .line 415
            new com.google.protobuf.RopeByteString$PieceIterator
            dup
            aload 0 /* this */
            invokespecial com.google.protobuf.RopeByteString$PieceIterator.<init>:(Lcom/google/protobuf/ByteString;)V
            astore 2 /* pieces */
        start local 2 // com.google.protobuf.RopeByteString$PieceIterator pieces
         2: .line 416
            goto 5
         3: .line 417
      StackMap locals: java.util.List com.google.protobuf.RopeByteString$PieceIterator
      StackMap stack:
            aload 2 /* pieces */
            invokevirtual com.google.protobuf.RopeByteString$PieceIterator.next:()Lcom/google/protobuf/ByteString$LeafByteString;
            astore 3 /* byteString */
        start local 3 // com.google.protobuf.ByteString$LeafByteString byteString
         4: .line 418
            aload 1 /* result */
            aload 3 /* byteString */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.asReadOnlyByteBuffer:()Ljava/nio/ByteBuffer;
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 3 // com.google.protobuf.ByteString$LeafByteString byteString
         5: .line 416
      StackMap locals:
      StackMap stack:
            aload 2 /* pieces */
            invokevirtual com.google.protobuf.RopeByteString$PieceIterator.hasNext:()Z
            ifne 3
         6: .line 420
            aload 1 /* result */
            areturn
        end local 2 // com.google.protobuf.RopeByteString$PieceIterator pieces
        end local 1 // java.util.List result
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lcom/google/protobuf/RopeByteString;
            1    7     1      result  Ljava/util/List<Ljava/nio/ByteBuffer;>;
            2    7     2      pieces  Lcom/google/protobuf/RopeByteString$PieceIterator;
            4    5     3  byteString  Lcom/google/protobuf/ByteString$LeafByteString;
    Signature: ()Ljava/util/List<Ljava/nio/ByteBuffer;>;

  public void writeTo(java.io.OutputStream);
    descriptor: (Ljava/io/OutputStream;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.io.OutputStream outputStream
         0: .line 425
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* outputStream */
            invokevirtual com.google.protobuf.ByteString.writeTo:(Ljava/io/OutputStream;)V
         1: .line 426
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* outputStream */
            invokevirtual com.google.protobuf.ByteString.writeTo:(Ljava/io/OutputStream;)V
         2: .line 427
            return
        end local 1 // java.io.OutputStream outputStream
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/google/protobuf/RopeByteString;
            0    3     1  outputStream  Ljava/io/OutputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
              Name  Flags
      outputStream  

  void writeToInternal(java.io.OutputStream, int, int);
    descriptor: (Ljava/io/OutputStream;II)V
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=4
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.io.OutputStream out
        start local 2 // int sourceOffset
        start local 3 // int numberToWrite
         0: .line 431
            iload 2 /* sourceOffset */
            iload 3 /* numberToWrite */
            iadd
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpgt 3
         1: .line 432
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* out */
            iload 2 /* sourceOffset */
            iload 3 /* numberToWrite */
            invokevirtual com.google.protobuf.ByteString.writeToInternal:(Ljava/io/OutputStream;II)V
         2: .line 433
            goto 9
      StackMap locals:
      StackMap stack:
         3: iload 2 /* sourceOffset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmplt 6
         4: .line 434
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* out */
            iload 2 /* sourceOffset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            iload 3 /* numberToWrite */
            invokevirtual com.google.protobuf.ByteString.writeToInternal:(Ljava/io/OutputStream;II)V
         5: .line 435
            goto 9
         6: .line 436
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            iload 2 /* sourceOffset */
            isub
            istore 4 /* numberToWriteInLeft */
        start local 4 // int numberToWriteInLeft
         7: .line 437
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* out */
            iload 2 /* sourceOffset */
            iload 4 /* numberToWriteInLeft */
            invokevirtual com.google.protobuf.ByteString.writeToInternal:(Ljava/io/OutputStream;II)V
         8: .line 438
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* out */
            iconst_0
            iload 3 /* numberToWrite */
            iload 4 /* numberToWriteInLeft */
            isub
            invokevirtual com.google.protobuf.ByteString.writeToInternal:(Ljava/io/OutputStream;II)V
        end local 4 // int numberToWriteInLeft
         9: .line 440
      StackMap locals:
      StackMap stack:
            return
        end local 3 // int numberToWrite
        end local 2 // int sourceOffset
        end local 1 // java.io.OutputStream out
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   10     0                 this  Lcom/google/protobuf/RopeByteString;
            0   10     1                  out  Ljava/io/OutputStream;
            0   10     2         sourceOffset  I
            0   10     3        numberToWrite  I
            7    9     4  numberToWriteInLeft  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
               Name  Flags
      out            
      sourceOffset   
      numberToWrite  

  void writeTo(com.google.protobuf.ByteOutput);
    descriptor: (Lcom/google/protobuf/ByteOutput;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // com.google.protobuf.ByteOutput output
         0: .line 444
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* output */
            invokevirtual com.google.protobuf.ByteString.writeTo:(Lcom/google/protobuf/ByteOutput;)V
         1: .line 445
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* output */
            invokevirtual com.google.protobuf.ByteString.writeTo:(Lcom/google/protobuf/ByteOutput;)V
         2: .line 446
            return
        end local 1 // com.google.protobuf.ByteOutput output
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/google/protobuf/RopeByteString;
            0    3     1  output  Lcom/google/protobuf/ByteOutput;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      output  

  void writeToReverse(com.google.protobuf.ByteOutput);
    descriptor: (Lcom/google/protobuf/ByteOutput;)V
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // com.google.protobuf.ByteOutput output
         0: .line 450
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            aload 1 /* output */
            invokevirtual com.google.protobuf.ByteString.writeToReverse:(Lcom/google/protobuf/ByteOutput;)V
         1: .line 451
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            aload 1 /* output */
            invokevirtual com.google.protobuf.ByteString.writeToReverse:(Lcom/google/protobuf/ByteOutput;)V
         2: .line 452
            return
        end local 1 // com.google.protobuf.ByteOutput output
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Lcom/google/protobuf/RopeByteString;
            0    3     1  output  Lcom/google/protobuf/ByteOutput;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      output  

  protected java.lang.String toStringInternal(java.nio.charset.Charset);
    descriptor: (Ljava/nio/charset/Charset;)Ljava/lang/String;
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.nio.charset.Charset charset
         0: .line 456
            new java.lang.String
            dup
            aload 0 /* this */
            invokevirtual com.google.protobuf.RopeByteString.toByteArray:()[B
            aload 1 /* charset */
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            areturn
        end local 1 // java.nio.charset.Charset charset
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0     this  Lcom/google/protobuf/RopeByteString;
            0    1     1  charset  Ljava/nio/charset/Charset;
    MethodParameters:
         Name  Flags
      charset  

  public boolean isValidUtf8();
    descriptor: ()Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 464
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iconst_0
            iconst_0
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            istore 1 /* leftPartial */
        start local 1 // int leftPartial
         1: .line 465
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 1 /* leftPartial */
            iconst_0
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            invokevirtual com.google.protobuf.ByteString.size:()I
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            istore 2 /* state */
        start local 2 // int state
         2: .line 466
            iload 2 /* state */
            ifne 3
            iconst_1
            ireturn
      StackMap locals: int int
      StackMap stack:
         3: iconst_0
            ireturn
        end local 2 // int state
        end local 1 // int leftPartial
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    4     0         this  Lcom/google/protobuf/RopeByteString;
            1    4     1  leftPartial  I
            2    4     2        state  I

  protected int partialIsValidUtf8(int, int, int);
    descriptor: (III)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // int state
        start local 2 // int offset
        start local 3 // int length
         0: .line 471
            iload 2 /* offset */
            iload 3 /* length */
            iadd
            istore 4 /* toIndex */
        start local 4 // int toIndex
         1: .line 472
            iload 4 /* toIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpgt 3
         2: .line 473
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* state */
            iload 2 /* offset */
            iload 3 /* length */
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            ireturn
         3: .line 474
      StackMap locals: int
      StackMap stack:
            iload 2 /* offset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmplt 5
         4: .line 475
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 1 /* state */
            iload 2 /* offset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            iload 3 /* length */
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            ireturn
         5: .line 477
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            iload 2 /* offset */
            isub
            istore 5 /* leftLength */
        start local 5 // int leftLength
         6: .line 478
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* state */
            iload 2 /* offset */
            iload 5 /* leftLength */
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            istore 6 /* leftPartial */
        start local 6 // int leftPartial
         7: .line 479
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 6 /* leftPartial */
            iconst_0
            iload 3 /* length */
            iload 5 /* leftLength */
            isub
            invokevirtual com.google.protobuf.ByteString.partialIsValidUtf8:(III)I
            ireturn
        end local 6 // int leftPartial
        end local 5 // int leftLength
        end local 4 // int toIndex
        end local 3 // int length
        end local 2 // int offset
        end local 1 // int state
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lcom/google/protobuf/RopeByteString;
            0    8     1        state  I
            0    8     2       offset  I
            0    8     3       length  I
            1    8     4      toIndex  I
            6    8     5   leftLength  I
            7    8     6  leftPartial  I
    MethodParameters:
        Name  Flags
      state   
      offset  
      length  

  public boolean equals(java.lang.Object);
    descriptor: (Ljava/lang/Object;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.lang.Object other
         0: .line 488
            aload 1 /* other */
            aload 0 /* this */
            if_acmpne 2
         1: .line 489
            iconst_1
            ireturn
         2: .line 491
      StackMap locals:
      StackMap stack:
            aload 1 /* other */
            instanceof com.google.protobuf.ByteString
            ifne 4
         3: .line 492
            iconst_0
            ireturn
         4: .line 495
      StackMap locals:
      StackMap stack:
            aload 1 /* other */
            checkcast com.google.protobuf.ByteString
            astore 2 /* otherByteString */
        start local 2 // com.google.protobuf.ByteString otherByteString
         5: .line 496
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            aload 2 /* otherByteString */
            invokevirtual com.google.protobuf.ByteString.size:()I
            if_icmpeq 7
         6: .line 497
            iconst_0
            ireturn
         7: .line 499
      StackMap locals: com.google.protobuf.ByteString
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            ifne 9
         8: .line 500
            iconst_1
            ireturn
         9: .line 508
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual com.google.protobuf.RopeByteString.peekCachedHashCode:()I
            istore 3 /* thisHash */
        start local 3 // int thisHash
        10: .line 509
            aload 2 /* otherByteString */
            invokevirtual com.google.protobuf.ByteString.peekCachedHashCode:()I
            istore 4 /* thatHash */
        start local 4 // int thatHash
        11: .line 510
            iload 3 /* thisHash */
            ifeq 13
            iload 4 /* thatHash */
            ifeq 13
            iload 3 /* thisHash */
            iload 4 /* thatHash */
            if_icmpeq 13
        12: .line 511
            iconst_0
            ireturn
        13: .line 514
      StackMap locals: int int
      StackMap stack:
            aload 0 /* this */
            aload 2 /* otherByteString */
            invokevirtual com.google.protobuf.RopeByteString.equalsFragments:(Lcom/google/protobuf/ByteString;)Z
            ireturn
        end local 4 // int thatHash
        end local 3 // int thisHash
        end local 2 // com.google.protobuf.ByteString otherByteString
        end local 1 // java.lang.Object other
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   14     0             this  Lcom/google/protobuf/RopeByteString;
            0   14     1            other  Ljava/lang/Object;
            5   14     2  otherByteString  Lcom/google/protobuf/ByteString;
           10   14     3         thisHash  I
           11   14     4         thatHash  I
    MethodParameters:
       Name  Flags
      other  

  private boolean equalsFragments(com.google.protobuf.ByteString);
    descriptor: (Lcom/google/protobuf/ByteString;)Z
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=4, locals=13, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // com.google.protobuf.ByteString other
         0: .line 525
            iconst_0
            istore 2 /* thisOffset */
        start local 2 // int thisOffset
         1: .line 526
            new com.google.protobuf.RopeByteString$PieceIterator
            dup
            aload 0 /* this */
            invokespecial com.google.protobuf.RopeByteString$PieceIterator.<init>:(Lcom/google/protobuf/ByteString;)V
            astore 3 /* thisIter */
        start local 3 // java.util.Iterator thisIter
         2: .line 527
            aload 3 /* thisIter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.protobuf.ByteString$LeafByteString
            astore 4 /* thisString */
        start local 4 // com.google.protobuf.ByteString$LeafByteString thisString
         3: .line 529
            iconst_0
            istore 5 /* thatOffset */
        start local 5 // int thatOffset
         4: .line 530
            new com.google.protobuf.RopeByteString$PieceIterator
            dup
            aload 1 /* other */
            invokespecial com.google.protobuf.RopeByteString$PieceIterator.<init>:(Lcom/google/protobuf/ByteString;)V
            astore 6 /* thatIter */
        start local 6 // java.util.Iterator thatIter
         5: .line 531
            aload 6 /* thatIter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.protobuf.ByteString$LeafByteString
            astore 7 /* thatString */
        start local 7 // com.google.protobuf.ByteString$LeafByteString thatString
         6: .line 533
            iconst_0
            istore 8 /* pos */
        start local 8 // int pos
         7: .line 535
      StackMap locals: com.google.protobuf.RopeByteString com.google.protobuf.ByteString int java.util.Iterator com.google.protobuf.ByteString$LeafByteString int java.util.Iterator com.google.protobuf.ByteString$LeafByteString int
      StackMap stack:
            aload 4 /* thisString */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.size:()I
            iload 2 /* thisOffset */
            isub
            istore 9 /* thisRemaining */
        start local 9 // int thisRemaining
         8: .line 536
            aload 7 /* thatString */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.size:()I
            iload 5 /* thatOffset */
            isub
            istore 10 /* thatRemaining */
        start local 10 // int thatRemaining
         9: .line 537
            iload 9 /* thisRemaining */
            iload 10 /* thatRemaining */
            invokestatic java.lang.Math.min:(II)I
            istore 11 /* bytesToCompare */
        start local 11 // int bytesToCompare
        10: .line 541
            iload 2 /* thisOffset */
            ifne 12
        11: .line 542
            aload 4 /* thisString */
            aload 7 /* thatString */
            iload 5 /* thatOffset */
            iload 11 /* bytesToCompare */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.equalsRange:(Lcom/google/protobuf/ByteString;II)Z
            goto 13
        12: .line 543
      StackMap locals: int int int
      StackMap stack:
            aload 7 /* thatString */
            aload 4 /* thisString */
            iload 2 /* thisOffset */
            iload 11 /* bytesToCompare */
            invokevirtual com.google.protobuf.ByteString$LeafByteString.equalsRange:(Lcom/google/protobuf/ByteString;II)Z
        13: .line 540
      StackMap locals:
      StackMap stack: int
            istore 12 /* stillEqual */
        start local 12 // boolean stillEqual
        14: .line 544
            iload 12 /* stillEqual */
            ifne 16
        15: .line 545
            iconst_0
            ireturn
        16: .line 548
      StackMap locals: int
      StackMap stack:
            iload 8 /* pos */
            iload 11 /* bytesToCompare */
            iadd
            istore 8 /* pos */
        17: .line 549
            iload 8 /* pos */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            if_icmplt 21
        18: .line 550
            iload 8 /* pos */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.totalLength:I
            if_icmpne 20
        19: .line 551
            iconst_1
            ireturn
        20: .line 553
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalStateException
            dup
            invokespecial java.lang.IllegalStateException.<init>:()V
            athrow
        21: .line 556
      StackMap locals:
      StackMap stack:
            iload 11 /* bytesToCompare */
            iload 9 /* thisRemaining */
            if_icmpne 25
        22: .line 557
            iconst_0
            istore 2 /* thisOffset */
        23: .line 558
            aload 3 /* thisIter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.protobuf.ByteString$LeafByteString
            astore 4 /* thisString */
        24: .line 559
            goto 26
        25: .line 560
      StackMap locals:
      StackMap stack:
            iload 2 /* thisOffset */
            iload 11 /* bytesToCompare */
            iadd
            istore 2 /* thisOffset */
        26: .line 562
      StackMap locals:
      StackMap stack:
            iload 11 /* bytesToCompare */
            iload 10 /* thatRemaining */
            if_icmpne 30
        27: .line 563
            iconst_0
            istore 5 /* thatOffset */
        28: .line 564
            aload 6 /* thatIter */
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast com.google.protobuf.ByteString$LeafByteString
            astore 7 /* thatString */
        29: .line 565
            goto 7
        30: .line 566
      StackMap locals:
      StackMap stack:
            iload 5 /* thatOffset */
            iload 11 /* bytesToCompare */
            iadd
            istore 5 /* thatOffset */
        end local 12 // boolean stillEqual
        end local 11 // int bytesToCompare
        end local 10 // int thatRemaining
        end local 9 // int thisRemaining
        31: .line 534
            goto 7
        end local 8 // int pos
        end local 7 // com.google.protobuf.ByteString$LeafByteString thatString
        end local 6 // java.util.Iterator thatIter
        end local 5 // int thatOffset
        end local 4 // com.google.protobuf.ByteString$LeafByteString thisString
        end local 3 // java.util.Iterator thisIter
        end local 2 // int thisOffset
        end local 1 // com.google.protobuf.ByteString other
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   32     0            this  Lcom/google/protobuf/RopeByteString;
            0   32     1           other  Lcom/google/protobuf/ByteString;
            1   32     2      thisOffset  I
            2   32     3        thisIter  Ljava/util/Iterator<Lcom/google/protobuf/ByteString$LeafByteString;>;
            3   32     4      thisString  Lcom/google/protobuf/ByteString$LeafByteString;
            4   32     5      thatOffset  I
            5   32     6        thatIter  Ljava/util/Iterator<Lcom/google/protobuf/ByteString$LeafByteString;>;
            6   32     7      thatString  Lcom/google/protobuf/ByteString$LeafByteString;
            7   32     8             pos  I
            8   31     9   thisRemaining  I
            9   31    10   thatRemaining  I
           10   31    11  bytesToCompare  I
           14   31    12      stillEqual  Z
    MethodParameters:
       Name  Flags
      other  

  protected int partialHash(int, int, int);
    descriptor: (III)I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=7, args_size=4
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // int h
        start local 2 // int offset
        start local 3 // int length
         0: .line 573
            iload 2 /* offset */
            iload 3 /* length */
            iadd
            istore 4 /* toIndex */
        start local 4 // int toIndex
         1: .line 574
            iload 4 /* toIndex */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmpgt 3
         2: .line 575
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* h */
            iload 2 /* offset */
            iload 3 /* length */
            invokevirtual com.google.protobuf.ByteString.partialHash:(III)I
            ireturn
         3: .line 576
      StackMap locals: int
      StackMap stack:
            iload 2 /* offset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            if_icmplt 5
         4: .line 577
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 1 /* h */
            iload 2 /* offset */
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            isub
            iload 3 /* length */
            invokevirtual com.google.protobuf.ByteString.partialHash:(III)I
            ireturn
         5: .line 579
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.leftLength:I
            iload 2 /* offset */
            isub
            istore 5 /* leftLength */
        start local 5 // int leftLength
         6: .line 580
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.left:Lcom/google/protobuf/ByteString;
            iload 1 /* h */
            iload 2 /* offset */
            iload 5 /* leftLength */
            invokevirtual com.google.protobuf.ByteString.partialHash:(III)I
            istore 6 /* leftPartial */
        start local 6 // int leftPartial
         7: .line 581
            aload 0 /* this */
            getfield com.google.protobuf.RopeByteString.right:Lcom/google/protobuf/ByteString;
            iload 6 /* leftPartial */
            iconst_0
            iload 3 /* length */
            iload 5 /* leftLength */
            isub
            invokevirtual com.google.protobuf.ByteString.partialHash:(III)I
            ireturn
        end local 6 // int leftPartial
        end local 5 // int leftLength
        end local 4 // int toIndex
        end local 3 // int length
        end local 2 // int offset
        end local 1 // int h
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Lcom/google/protobuf/RopeByteString;
            0    8     1            h  I
            0    8     2       offset  I
            0    8     3       length  I
            1    8     4      toIndex  I
            6    8     5   leftLength  I
            7    8     6  leftPartial  I
    MethodParameters:
        Name  Flags
      h       
      offset  
      length  

  public com.google.protobuf.CodedInputStream newCodedInput();
    descriptor: ()Lcom/google/protobuf/CodedInputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 590
            new com.google.protobuf.RopeByteString$RopeInputStream
            dup
            aload 0 /* this */
            invokespecial com.google.protobuf.RopeByteString$RopeInputStream.<init>:(Lcom/google/protobuf/RopeByteString;)V
            invokestatic com.google.protobuf.CodedInputStream.newInstance:(Ljava/io/InputStream;)Lcom/google/protobuf/CodedInputStream;
            areturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  public java.io.InputStream newInput();
    descriptor: ()Ljava/io/InputStream;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 595
            new com.google.protobuf.RopeByteString$RopeInputStream
            dup
            aload 0 /* this */
            invokespecial com.google.protobuf.RopeByteString$RopeInputStream.<init>:(Lcom/google/protobuf/RopeByteString;)V
            areturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  java.lang.Object writeReplace();
    descriptor: ()Ljava/lang/Object;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.google.protobuf.RopeByteString this
         0: .line 788
            aload 0 /* this */
            invokevirtual com.google.protobuf.RopeByteString.toByteArray:()[B
            invokestatic com.google.protobuf.ByteString.wrap:([B)Lcom/google/protobuf/ByteString;
            areturn
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;

  private void readObject(java.io.ObjectInputStream);
    descriptor: (Ljava/io/ObjectInputStream;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.protobuf.RopeByteString this
        start local 1 // java.io.ObjectInputStream in
         0: .line 792
            new java.io.InvalidObjectException
            dup
            ldc "RopeByteStream instances are not to be serialized directly"
            invokespecial java.io.InvalidObjectException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.ObjectInputStream in
        end local 0 // com.google.protobuf.RopeByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/RopeByteString;
            0    1     1    in  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    

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