code: public ByteString readBytes() throws IOException {
      final int size = readRawVarint32();
      if (size == 0) {
        return ByteString.EMPTY;
      } else if (size <= (bufferSize - bufferPos) && size > 0) {
        // Fast path:  We already have the bytes in a contiguous buffer, so
        //   just copy directly from it.
        final ByteString result = ByteString.copyFrom(buffer, bufferPos, size);
        bufferPos += size;
        return result;
      } else {
        // Slow path:  Build a byte array first then copy it.
        return ByteString.copyFrom(readRawBytes(size));
      }
    }
docs: Read a {@code bytes} field value from the stream.