code: public <T> T getPropertyNonNull(final String key, final T defaultValue) {
          T value = getProperty(key, defaultValue);
          if (value == null) {
              throw new IllegalArgumentException();
          }
          return value;
      }
docs: Gets the property with the given key.
  
  @param key the key
  @param defaultValue the default value
  @param <T> the property value type
  @return the property value, or the default value if the property is not defined
  @throws IllegalArgumentException if the value and default value are null
  @since 3.7