class WorkbenchPreferenceScopeResolutionStrategiesImpl implements WorkbenchPreferenceScopeResolutionStrategies {

    @Override
    public PreferenceScopeResolutionStrategyInfo getUserInfoFor(final String scopeType,
                                                                final String scopeKey ) {
        PreferenceScopeResolutionStrategy scopeResolutionStrategy;

        if ( scopeType != null ) {
            PreferenceScope userScope = scopeFactory.createScope( WorkbenchPreferenceScopes.USER );
            PreferenceScope userScopedScope;

            if ( scopeKey != null ) {
                userScopedScope = scopeFactory.createScope(scopeType, scopeKey );
            } else {
                userScopedScope = scopeFactory.createScope(scopeType );
            }

            PreferenceScope projectUserScope = scopeFactory.createScope(userScope, userScopedScope );
            scopeResolutionStrategy = new WorkbenchPreferenceScopeResolutionStrategy(scopeFactory, projectUserScope );
        } else {
            scopeResolutionStrategy = new WorkbenchPreferenceScopeResolutionStrategy(scopeFactory );
        }

        return scopeResolutionStrategy.getInfo();
    }

    public  WorkbenchPreferenceScopeResolutionStrategiesImpl();
    @Inject public  WorkbenchPreferenceScopeResolutionStrategiesImpl( final PreferenceScopeFactory scopeFactory );

}