@Override
    public String readString() throws IOException
    {
        final int length = readRawVarint32();
        if (length < 0)
            throw ProtobufException.negativeSize();

        if (buffer.remaining() < length)
            throw ProtobufException.misreportedSize();

        // if(offset + length > limit)

        if (buffer.hasArray())
        {
            final int currPosition = buffer.position();
            buffer.position(buffer.position() + length);
            return STRING.deser(buffer.array(),
                    buffer.arrayOffset() + currPosition,
                    length);
        }
        else
        {
            byte[] tmp = new byte[length];
            buffer.get(tmp);
            return STRING.deser(tmp);
        }

        // final int offset = this.offset;

        // this.offset += length;

        // return STRING.deser(buffer, offset, length);
    }
Read an {@code sint64} field value from the internal buffer.
protostuff-core/src/main/java/io/protostuff/ByteBufferInput.java