class PreferenceStoreImpl implements PreferenceStore {

    @Override
    public <T> void putIfAbsent(final PreferenceScope scope,
                                final String key,
                                final T value) {
        if (!storage.exists(scope,
                            key)) {
            put(scope,
                key,
                value);
        }
    }

    protected  PreferenceStoreImpl();
      PreferenceStoreImpl(final PreferenceStorage storage,
                        final PreferenceScopeFactory scopeFactory,
                        final PreferenceScopeResolutionStrategy defaultScopeResolutionStrategy);
    @Inject public  PreferenceStoreImpl(final PreferenceStorage storage,
                               final PreferenceScopeFactory scopeFactory,
                               @Customizable final PreferenceScopeResolutionStrategy defaultScopeResolutionStrategy,
                               final Instance<PreferenceScopeResolutionStrategy> preferenceScopeResolutionStrategy,
                               final InjectionPoint ip);

}