code: protected <T extends Comparable> T getOrNull(String prefix, PropertyDefinition property) {
          return getOrDefault(prefix, property, null);
      }
docs: Returns the value of the requested {@link PropertyDefinition} if available in the
  declarative or programmatic configuration (XML or Config API), can be found in the
  system's environment, or passed as a JVM property. Otherwise it will return <tt>null</tt>.
  <p/>
  This overload will resolve the requested property in the following order, whereas the
  higher priority is from top to bottom:
  <ul>
  <li>{@link System#getProperty(String)}: JVM properties</li>
  <li>{@link System#getenv(String)}: System environment</li>
  <li>Configuration properties of this {@link DiscoveryStrategy}</li>
  </ul>
  To resolve JVM properties or the system environment the property's key is prefixed with
  given <tt>prefix</tt>, therefore a prefix of <i>com.hazelcast.discovery</i> and a property
  key of <i>hostname</i> will result in a property lookup of <i>com.hazelcast.discovery.hostname</i>
  in the system environment and JVM properties.
  
  @param prefix   the property key prefix for environment and JVM properties lookup
  @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, system environment
  or JVM properties, otherwise null