code: protected <T> T defaultIfNotSet(String propertyName, T defaultValue, Class<T> type) {
      return (isSet(propertyName) ? convert(propertyName, type) : defaultValue);
    }
docs: Defaults of the value for the named property if the property does not exist.
  
  @param <T> {@link Class} type of the return value.
  @param propertyName the name of the property to get.
  @param defaultValue the default value to return if the named property does not exist.
  @param type the desired {@link Class} type of the named property value.
  @return the value of the named property as a instance of the specified {@link Class} type
  or return the default value if the named property does not exist.
  @see java.lang.Class
  @see #isSet(String)
  @see #convert(String, Class)