private static <T> Field<T> createCollectionInlineV(int number,
            String name, java.lang.reflect.Field f,
            final MessageFactory messageFactory, final Delegate<Object> inline)
    {
        final Accessor accessor = AF.create(f);
        return new Field<T>(inline.getFieldType(), number, name, true,
                f.getAnnotation(Tag.class))
        {
            @Override
            protected void mergeFrom(Input input, T message) throws IOException
            {
                final Object value = inline.readFrom(input);
                Collection<Object> existing = accessor.get(message);
                if (existing == null)
                    accessor.set(message, existing = messageFactory.newMessage());
                
                existing.add(value);
            }

            @Override
            protected void writeTo(Output output, T message) throws IOException
            {
                final Collection<Object> collection = accessor.get(message);
                if (collection != null && !collection.isEmpty())
                {
                    for (Object o : collection)
                    {
                        if (o != null)
                            inline.writeTo(output, number, o, true);
                    }
                }
            }

            @Override
            protected void transfer(Pipe pipe, Input input, Output output,
                    boolean repeated) throws IOException
            {
                inline.transfer(pipe, input, output, number, repeated);
            }
        };
    }
For lazy initialization called by {@link RuntimeFieldFactory}.
protostuff-runtime/src/main/java/io/protostuff/runtime/RuntimeRepeatedFieldFactory.java