Inheritance: IReuseStrategyRegistration, IFactoryRegistration, IReusedWithin
        internal CompositeFrameworkRegistration(IRegistrationResolver registrationResolver, TypeMap typeMap, IEnumerable<TypeMap> dependencies, Type castTo, bool disposable)
        {
            NamedAttribute namedAttribute = null;

            this.dependencies = dependencies;
            this.serviceType = typeMap.ServiceType;
            this.concreteType = typeMap.ConcreteType;
            this.registrationResolver = registrationResolver;

            registration = new CompositeRegistration {
                ServiceType = castTo ?? serviceType,
                FactoryType = MakeFactoryType(castTo ?? serviceType)
            };

            SetLifetime();
            registration.Name = typeMap.Name;

            if (typeMap.Name.IsNullOrEmpty() && TryGetNamedAttribute(out namedAttribute)) {
                registration.Name = namedAttribute.Name;
            }

            if (disposable) {
                registration.OwnedByContainer();
            }

            As(concreteType, false);
        }
        internal CompositeFrameworkRegistration(IRegistrationResolver registrationResolver, TypeMap typeMap, IEnumerable <TypeMap> dependencies, Type castTo, bool disposable)
        {
            NamedAttribute namedAttribute = null;

            this.dependencies         = dependencies;
            this.serviceType          = typeMap.ServiceType;
            this.concreteType         = typeMap.ConcreteType;
            this.registrationResolver = registrationResolver;

            registration = new CompositeRegistration {
                ServiceType = castTo ?? serviceType,
                FactoryType = MakeFactoryType(castTo ?? serviceType)
            };

            SetLifetime();
            registration.Name = typeMap.Name;

            if (typeMap.Name.IsNullOrEmpty() && TryGetNamedAttribute(out namedAttribute))
            {
                registration.Name = namedAttribute.Name;
            }

            if (disposable)
            {
                registration.OwnedByContainer();
            }

            As(concreteType, false);
        }