public static <T> void copyNonDefaults(final T source,
                                           final T dest,
                                           final T vanillaObject,
                                           final UpdateAction updateAction) {
        copy(source, dest, vanillaObject, updateAction, CopyOption.DONT_COPY_DEFAULTS);
    }
Deep copy the field values of stroom POJO object trees from source into dest.
Relies on the public getters/setters so private fields won't be copied.
NOTE: Only deep copies objects in packages starting with 'stroom'
Only non default source values will be copied, ie. the value in source
is equal to the value in vanillaObject.
stroom-util/src/main/java/stroom/util/config/FieldMapper.java