/// <summary>
        /// Builds a new <see cref="MixinConfiguration"/> from the declarative configuration information in the given assemblies.
        /// </summary>
        /// <param name="parentConfiguration">The parent configuration to derive the new configuration from (can be <see langword="null"/>).</param>
        /// <param name="assemblies">The assemblies to be scanned for declarative mixin information.</param>
        /// <returns>An mixin configuration inheriting from <paramref name="parentConfiguration"/> and incorporating the configuration information
        /// held by the given assemblies.</returns>
        /// <exception cref="ArgumentNullException">The <paramref name="assemblies"/> parameter is <see langword="null"/>.</exception>
        public static MixinConfiguration BuildConfigurationFromAssemblies(MixinConfiguration parentConfiguration, IEnumerable <Assembly> assemblies)
        {
            ArgumentUtility.CheckNotNull("assemblies", assemblies);

            var builder = new DeclarativeConfigurationBuilder(parentConfiguration);

            foreach (Assembly assembly in assemblies)
            {
                builder.AddAssembly(assembly);
            }

            return(builder.BuildConfiguration());
        }
        /// <summary>
        /// Builds a new <see cref="MixinConfiguration"/> from the declarative configuration information in the given types.
        /// </summary>
        /// <param name="parentConfiguration">The parent configuration to derive the new configuration from (can be <see langword="null"/>).</param>
        /// <param name="types">The types to be scanned for declarative mixin information.</param>
        /// <returns>A mixin configuration inheriting from <paramref name="parentConfiguration"/> and incorporating the configuration information
        /// held by the given types.</returns>
        /// <exception cref="ArgumentNullException">The <paramref name="types"/> parameter is <see langword="null"/>.</exception>
        public static MixinConfiguration BuildConfigurationFromTypes(MixinConfiguration parentConfiguration, IEnumerable <Type> types)
        {
            ArgumentUtility.CheckNotNull("types", types);

            var builder = new DeclarativeConfigurationBuilder(parentConfiguration);

            foreach (Type type in types)
            {
                if (!type.IsDefined(typeof(IgnoreForMixinConfigurationAttribute), false))
                {
                    builder.AddType(type);
                }
            }

            return(builder.BuildConfiguration());
        }