@Override
    public <T> T mergeObject(T value, final Schema<T> schema) throws IOException
    {
        if (decodeNestedMessageAsGroup)
            return mergeObjectEncodedAsGroup(value, schema);

        final int length = readRawVarint32();
        // if (recursionDepth >= recursionLimit) {
        // throw ProtobufException.recursionLimitExceeded();
        // }
        final int oldLimit = pushLimit(length);
        // ++recursionDepth;

        if (value == null)
        {
            value = schema.newMessage();
        }
        schema.mergeFrom(this, value);
        if (!schema.isInitialized(value))
        {
            throw new UninitializedMessageException(value, schema);
        }
        checkLastTagWas(0);
        // --recursionDepth;
        popLimit(oldLimit);
        return value;
    }
Read a {@code string} field value from the stream into a ByteBuffer.
protostuff-core/src/main/java/io/protostuff/CodedInput.java