internal void AddServiceHostBuilder(Type builder, bool force)
        {
            if (typeof(IServiceHostBuilder).IsAssignableFrom(builder) == false)
            {
                throw new ArgumentException(string.Format(
                                                "The type {0} does not represent an IServiceHostBuilder.",
                                                builder.FullName), "builder");
            }

            var serviceHostBuilder = WcfUtils.GetClosedGenericDefinition(typeof(IServiceHostBuilder <>), builder);

            if (serviceHostBuilder == null)
            {
                throw new ArgumentException(string.Format(
                                                "The service model cannot be inferred from the builder {0}.  Did you implement IServiceHostBuilder<>?",
                                                builder.FullName), "builder");
            }

            if (kernel == null)
            {
                afterInit += () => RegisterServiceHostBuilder(serviceHostBuilder, builder, force);
            }
            else
            {
                RegisterServiceHostBuilder(serviceHostBuilder, builder, force);
            }
        }