code: @SuppressWarnings("unchecked")
    public <T> T getPropertyValueAs(final String propertyName, final T defaultPropertyValue, final Class<T> type) {
      try {
        return ObjectUtils.defaultIfNull(convert(getPropertyValue(propertyName, NOT_REQUIRED), type),
          defaultPropertyValue);
      }
      catch (ConversionException ignore) {
        return defaultPropertyValue;
      }
    }
docs: Gets the value of the configuration property identified by name as a value of the specified Class type.
  The defaultPropertyValue parameter effectively overrides the required attribute indicating that the property
  is not required to be declared or defined.
  
  @param propertyName a String value indicating the name of the configuration property.
  @param defaultPropertyValue the default value for the configuration property when the property is undeclared or
  undefined.
  @param type the expected Class type of the configuration property value.
  @return the value of the configuration property identified by name, or the default property value if the property
  was undeclared or undefined.