public void UseType(Type type)
        {
            var implementation = implementationCache.GetOrCreate(type);
            var implementationConfiguration = implementationConfigurationCache.GetOrCreate(implementation);
            var abstractionConfiguration    = new StupidAbstractionConfiguration(new[] { implementationConfiguration });

            abstractionConfigurationCollection.Add(abstractionType, abstractionConfiguration);
        }
        public void UseTypes(Type[] types)
        {
            var implementationConfigurations = types
                                               .Select(x => implementationCache.GetOrCreate(x))
                                               .Select(x => implementationConfigurationCache.GetOrCreate(x))
                                               .ToArray();
            var abstractionConfiguration = new StupidAbstractionConfiguration(implementationConfigurations);

            abstractionConfigurationCollection.Add(abstractionType, abstractionConfiguration);
        }