### Question:
SystemProperty { public T getDefaultValue() { return defaultValue; } private  SystemProperty(final Builder<T> builder); static Collection<SystemProperty> getProperties(); @SuppressWarnings("WeakerAccess") static void removePropertiesForPlugin(final String plugin); static Optional<SystemProperty> getProperty(final String key); @SuppressWarnings("unchecked") T getValue(); String getValueAsSaved(); String getDisplayValue(); boolean hasValueChanged(); String getDefaultDisplayValue(); void setValue(final T value); String getPlugin(); boolean isDynamic(); boolean isEncrypted(); boolean isRestartRequired(); void addListener(final Consumer<T> listener); void removeListener(final Consumer<T> listener); String getKey(); String getDescription(); T getDefaultValue();  }### Answer:
@Test public void willAllowNullDefaultsForAStringProperty() { final SystemProperty<String> stringProperty = SystemProperty.Builder.ofType(String.class) .setKey("a-null-string-property") .setDynamic(true) .build(); assertThat(stringProperty.getDefaultValue(), is(nullValue())); }
@Test public void willAllowNullDefaultsForAClassProperty() { final SystemProperty<Class> classProperty = SystemProperty.Builder.ofType(Class.class) .setKey("a-null-class-property") .setBaseClass(AuthProvider.class) .setDynamic(false) .build(); assertThat(classProperty.getDefaultValue(), is(nullValue())); }