code: protected <T extends Comparable> T getOrDefault(PropertyDefinition property, T defaultValue) {
          return getOrDefault(null, property, defaultValue);
      }
docs: Returns the value of the requested {@link PropertyDefinition} if available in the
  declarative or programmatic configuration (XML or Config API), otherwise it will
  return the given <tt>defaultValue</tt>.
  <p/>
  <b>This method overload won't do environment or JVM property lookup.</b> A call to
  this overload is equivalent to {@link #getOrDefault(String, PropertyDefinition, Comparable)}
  with <tt>null</tt> passed as the first parameter.
  
  @param property the PropertyDefinition to lookup
  @param <T>      the type of the property, must be compatible with the conversion
  result of {@link PropertyDefinition#typeConverter()}
  @return the value of the given property if available in the configuration, otherwise the
  given default value