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; }