@Override
    public BaseObject convert(final Object object, final boolean useInfoProviders) {
        if (object == null) {
            return OtherObject.builder()
                    .withDescription(UNKNOWN_OBJECT_DESCRIPTION)
                    .build();
        }

        final BaseObject baseObj;
        final ObjectInfoProvider objectInfoAppender = useInfoProviders
                ? getInfoAppender(object.getClass())
                : null;
        if (objectInfoAppender != null) {
            baseObj = objectInfoAppender.createBaseObject(object);
        } else {
            final OtherObject.Builder<Void> builder = OtherObject.builder()
                    .withType(getObjectType(object))
                    .withId(getObjectId(object))
                    .withName(getObjectName(object))
                    .withDescription(describe(object));

            builder.addData(getDataItems(object));

            baseObj = builder.build();
        }

        return baseObj;
    }
Shallow merge of the two Purpose objects
stroom-event-logging/stroom-event-logging-impl/src/main/java/stroom/event/logging/impl/StroomEventLoggingServiceImpl.java