@Override
    public <T> void writeObject(final int fieldNumber, final T value, final Schema<T> schema,
            final boolean repeated) throws IOException
    {
        LinkBuffer subBuf = new LinkBuffer(buffer.allocSize);
        // now serialize:
        LowCopyProtobufOutput subOutput = new LowCopyProtobufOutput(subBuf);
        schema.writeTo(subOutput, value);
        List<ByteBuffer> subBuffers = subBuf.finish();

        long subSize = subBuf.size();

        buffer.writeVarInt32(makeTag(fieldNumber, WIRETYPE_LENGTH_DELIMITED));
        buffer.writeVarInt64(subSize);
        for (ByteBuffer b : subBuffers)
        {
            buffer.writeByteBuffer(b);
        }
    }
Output that differs from the standard by attempting to avoid extra copies of large ByteBuffer fields. When used with
ByteBuffer=true compiler option, we can splice in ByteBuffer objects without copying them. Most of the magic lives in
LinkBuffer, so this class exists just to serialize to a LinkBuffer.

@author Ryan Rawson
protostuff-core/src/main/java/io/protostuff/LowCopyProtobufOutput.java