code: public <T> void setDefaultValue(Class<T> type, Supplier<T> defaultValueSupplier) {
      Assert.notNull(type, "Class type is required");
      this.defaultValues.put(type, defaultValueSupplier);
    }
docs: Sets the {@link Supplier} used to supply a {@link Object default value} for the specified {@link Class type}.
  
  This overloaded method is useful for dynamically generating new {@link Object values} at runtime,
  such as date/time values
  
  @param <T> {@link Class classification/type} of objects which may have {@link Object default values}.
  @param type {@link Class} type to define the {@link Object default value} for.
  @param defaultValueSupplier {@link Supplier} used to supply a {@link Object default value}
  for the specified {@link Class} type.
  @throws IllegalArgumentException if {@link Class type} is {@literal null}.
  @see #setDefaultValue(Class, Object)
  @see java.util.function.Supplier
  @see java.lang.Class