* @param type a {@link Class} object.
* @param key a {@link String} object.
* @param defaultValue a T object.
*/
public ConfigurationAccess( @NotNull Configuration configuration, @NotNull Class<? extends T> type, @NotNull @NonNls String key, @NotNull final T defaultValue ) {
this( configuration, type, key, new DefaultValueProvider() {
@Override
@NotNull
public <T> T getDefaultValue( @NotNull @NonNls String key, @NotNull Class<T> type ) {
return type.cast( defaultValue );
}