/// <summary>
        /// Sets the composition container to the ambient services.
        /// </summary>
        /// <param name="ambientServicesBuilder">The ambient services builder.</param>
        /// <param name="containerBuilderConfig">The container builder configuration.</param>
        /// <returns>The provided ambient services builder.</returns>
        public static AmbientServicesBuilder WithMefCompositionContainer(this AmbientServicesBuilder ambientServicesBuilder, Action<MefCompositionContainerBuilder> containerBuilderConfig = null)
        {
            Contract.Requires(ambientServicesBuilder != null);
            
            var containerBuilder = new MefCompositionContainerBuilder(new CompositionContainerBuilderContext(ambientServicesBuilder.AmbientServices));

            containerBuilderConfig?.Invoke(containerBuilder);

            return ambientServicesBuilder.WithCompositionContainer(containerBuilder.CreateContainer());
        }
        /// <summary>
        /// Sets the composition container to the ambient services.
        /// </summary>
        /// <param name="ambientServicesBuilder">The ambient services builder.</param>
        /// <param name="containerBuilderConfig">The container builder configuration.</param>
        /// <returns>The provided ambient services builder.</returns>
        public static AmbientServicesBuilder WithMefCompositionContainer(this AmbientServicesBuilder ambientServicesBuilder, Action<MefCompositionContainerBuilder> containerBuilderConfig)
        {
            Contract.Requires(ambientServicesBuilder != null);
            Contract.Requires(containerBuilderConfig != null);

            var containerBuilder = new MefCompositionContainerBuilder(
                ambientServicesBuilder.AmbientServices.LogManager,
                ambientServicesBuilder.AmbientServices.ConfigurationManager,
                ambientServicesBuilder.AmbientServices.PlatformManager);

            containerBuilderConfig(containerBuilder);

            return ambientServicesBuilder.WithCompositionContainer(containerBuilder.CreateContainer());
        }