Source:
<code>public <K, V> Store<K, V> createStore(Configuration<K, V> storeConfig, ServiceConfiguration<?>... serviceConfigs) { CacheStoreServiceConfiguration cacheStoreServiceConfig = findSingletonAmongst(CacheStoreServiceConfiguration.class, (Object[])serviceConfigs); <START> if (cacheStoreServiceConfig != null) { <END> throw new IllegalArgumentException("CacheStore service cannot be configured with explicit config"); } final ArrayList<ServiceConfiguration<?>> enhancedServiceConfigs = new ArrayList<ServiceConfiguration<?>>(Arrays.asList(serviceConfigs)); cacheStoreServiceConfig = setTierConfigurations(storeConfig, enhancedServiceConfigs); Class<? extends CachingTier.Provider> cachingTierProviderClass = cacheStoreServiceConfig.cachingTierProvider(); CachingTier.Provider cachingTierProvider = serviceProvider.getService(cachingTierProviderClass); if (cachingTierProvider == null) { throw new IllegalArgumentException("No registered service for caching tier provider " + cachingTierProviderClass.getName()); } Class<? extends AuthoritativeTier.Provider> authoritativeTierProviderClass = cacheStoreServiceConfig.authoritativeTierProvider(); AuthoritativeTier.Provider authoritativeTierProvider = serviceProvider.getService(authoritativeTierProviderClass); if (authoritativeTierProvider == null) { throw new IllegalArgumentException("No registered service for authoritative tier provider " + authoritativeTierProviderClass.getName()); } final ServiceConfiguration<?>[] configurations = enhancedServiceConfigs.toArray(new ServiceConfiguration<?>[enhancedServiceConfigs.size()]); CachingTier<K, V> cachingTier = cachingTierProvider.createCachingTier(storeConfig, configurations); AuthoritativeTier<K, V> authoritativeTier = authoritativeTierProvider.createAuthoritativeTier(storeConfig, configurations); CacheStore<K, V> store = new CacheStore<K, V>(cachingTier, authoritativeTier); registerStore(store, cachingTierProvider, authoritativeTierProvider); return store; }</code><technical_language>If reading whats right, simpler CacheStoreServiceConfiguration implement ServiceConfiguration, rename CacheStoreConfiguration</technical_language>

Target:
public <K, V> Store<K, V> createStore(Configuration<K, V> storeConfig, ServiceConfiguration<?>... serviceConfigs) { final ArrayList<ServiceConfiguration<?>> enhancedServiceConfigs = new ArrayList<ServiceConfiguration<?>>(Arrays.asList(serviceConfigs)); CacheStoreConfiguration cacheStoreServiceConfig = setTierConfigurations(storeConfig, enhancedServiceConfigs); Class<? extends CachingTier.Provider> cachingTierProviderClass = cacheStoreServiceConfig.cachingTierProvider(); CachingTier.Provider cachingTierProvider = serviceProvider.getService(cachingTierProviderClass); if (cachingTierProvider == null) { throw new IllegalArgumentException("No registered service for caching tier provider " + cachingTierProviderClass.getName()); } Class<? extends AuthoritativeTier.Provider> authoritativeTierProviderClass = cacheStoreServiceConfig.authoritativeTierProvider(); AuthoritativeTier.Provider authoritativeTierProvider = serviceProvider.getService(authoritativeTierProviderClass); if (authoritativeTierProvider == null) { throw new IllegalArgumentException("No registered service for authoritative tier provider " + authoritativeTierProviderClass.getName()); } final ServiceConfiguration<?>[] configurations = enhancedServiceConfigs.toArray(new ServiceConfiguration<?>[enhancedServiceConfigs.size()]); CachingTier<K, V> cachingTier = cachingTierProvider.createCachingTier(storeConfig, configurations); AuthoritativeTier<K, V> authoritativeTier = authoritativeTierProvider.createAuthoritativeTier(storeConfig, configurations); CacheStore<K, V> store = new CacheStore<K, V>(cachingTier, authoritativeTier); registerStore(store, cachingTierProvider, authoritativeTierProvider); return store; }