@Override
    public <T> T get(final Option<T> option) {
        Object value = optionMap.get(option);
        if (value == null) {
            Object defaultValue = wrapNull(load(option));
            value = optionMap.putIfAbsent(option, defaultValue);
            if (value == null) {
                value = defaultValue;
            }
        }
        return option.getValueClass().cast(unwrapNull(value));
    }