final class com.google.protobuf.ByteString$BoundedByteString extends com.google.protobuf.ByteString$LiteralByteString
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.google.protobuf.ByteString$BoundedByteString
  super_class: com.google.protobuf.ByteString$LiteralByteString
{
  private final int bytesOffset;
    descriptor: I
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final int bytesLength;
    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

  void <init>(byte[], int, int);
    descriptor: ([BII)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // com.google.protobuf.ByteString$BoundedByteString this
        start local 1 // byte[] bytes
        start local 2 // int offset
        start local 3 // int length
         0: .line 1531
            aload 0 /* this */
            aload 1 /* bytes */
            invokespecial com.google.protobuf.ByteString$LiteralByteString.<init>:([B)V
         1: .line 1532
            iload 2 /* offset */
            iload 2 /* offset */
            iload 3 /* length */
            iadd
            aload 1 /* bytes */
            arraylength
            invokestatic com.google.protobuf.ByteString$BoundedByteString.checkRange:(III)I
            pop
         2: .line 1534
            aload 0 /* this */
            iload 2 /* offset */
            putfield com.google.protobuf.ByteString$BoundedByteString.bytesOffset:I
         3: .line 1535
            aload 0 /* this */
            iload 3 /* length */
            putfield com.google.protobuf.ByteString$BoundedByteString.bytesLength:I
         4: .line 1536
            return
        end local 3 // int length
        end local 2 // int offset
        end local 1 // byte[] bytes
        end local 0 // com.google.protobuf.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0    this  Lcom/google/protobuf/ByteString$BoundedByteString;
            0    5     1   bytes  [B
            0    5     2  offset  I
            0    5     3  length  I
    MethodParameters:
        Name  Flags
      bytes   
      offset  
      length  

  public byte byteAt(int);
    descriptor: (I)B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // com.google.protobuf.ByteString$BoundedByteString this
        start local 1 // int index
         0: .line 1551
            iload 1 /* index */
            aload 0 /* this */
            invokevirtual com.google.protobuf.ByteString$BoundedByteString.size:()I
            invokestatic com.google.protobuf.ByteString$BoundedByteString.checkIndex:(II)V
         1: .line 1552
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytes:[B
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytesOffset:I
            iload 1 /* index */
            iadd
            baload
            ireturn
        end local 1 // int index
        end local 0 // com.google.protobuf.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Lcom/google/protobuf/ByteString$BoundedByteString;
            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.ByteString$BoundedByteString this
        start local 1 // int index
         0: .line 1557
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytes:[B
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytesOffset:I
            iload 1 /* index */
            iadd
            baload
            ireturn
        end local 1 // int index
        end local 0 // com.google.protobuf.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    1     0   this  Lcom/google/protobuf/ByteString$BoundedByteString;
            0    1     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.ByteString$BoundedByteString this
         0: .line 1562
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytesLength:I
            ireturn
        end local 0 // com.google.protobuf.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/google/protobuf/ByteString$BoundedByteString;

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

  protected void copyToInternal(byte[], int, int, int);
    descriptor: ([BIII)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=5, locals=5, args_size=5
        start local 0 // com.google.protobuf.ByteString$BoundedByteString this
        start local 1 // byte[] target
        start local 2 // int sourceOffset
        start local 3 // int targetOffset
        start local 4 // int numberToCopy
         0: .line 1577
            aload 0 /* this */
            getfield com.google.protobuf.ByteString$BoundedByteString.bytes:[B
            aload 0 /* this */
            invokevirtual com.google.protobuf.ByteString$BoundedByteString.getOffsetIntoBytes:()I
            iload 2 /* sourceOffset */
            iadd
            aload 1 /* target */
            iload 3 /* targetOffset */
            iload 4 /* numberToCopy */
         1: .line 1576
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
         2: .line 1578
            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.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    3     0          this  Lcom/google/protobuf/ByteString$BoundedByteString;
            0    3     1        target  [B
            0    3     2  sourceOffset  I
            0    3     3  targetOffset  I
            0    3     4  numberToCopy  I
    MethodParameters:
              Name  Flags
      target        
      sourceOffset  
      targetOffset  
      numberToCopy  

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

  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.ByteString$BoundedByteString this
        start local 1 // java.io.ObjectInputStream in
         0: .line 1590
            new java.io.InvalidObjectException
            dup
         1: .line 1591
            ldc "BoundedByteStream instances are not to be serialized directly"
         2: .line 1590
            invokespecial java.io.InvalidObjectException.<init>:(Ljava/lang/String;)V
            athrow
        end local 1 // java.io.ObjectInputStream in
        end local 0 // com.google.protobuf.ByteString$BoundedByteString this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Lcom/google/protobuf/ByteString$BoundedByteString;
            0    3     1    in  Ljava/io/ObjectInputStream;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      in    
}
SourceFile: "ByteString.java"
NestHost: com.google.protobuf.ByteString
InnerClasses:
  private final BoundedByteString = com.google.protobuf.ByteString$BoundedByteString of com.google.protobuf.ByteString
  private LiteralByteString = com.google.protobuf.ByteString$LiteralByteString of com.google.protobuf.ByteString