@Override
    public <T> void set(Option<T> option, T value) {
        Object oldValue = optionMap.put(option, wrapNull(value));
        if (oldValue == null) {
            oldValue = option.getDefaultValue();
        }
        fireOptionChanged(option, option.getValueClass().cast(unwrapNull(oldValue)), value);
    }