@Retention(value=RUNTIME)
@Target(value={FIELD,TYPE})
public @interface PreserveNotNull
On a field: indicates that, when converting a config to a java object, the value of the field
must not be overriden by a null value from the config. Only non-null config values can replace
the field's value.
On a class declaration: applies the effect of this annotation to all the fields.