/// <summary>
        /// Creates the specified interceptor type.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        /// <remarks>The returned type will be wrapped by the message interceptor decorator for capturing metrics</remarks>
        public IMessageInterceptor Create(Type type)
        {
            var interceptor = (IMessageInterceptor)_container.Create().GetInstance(type);
            var decorator   = new MessageInterceptorDecorator(_container.Create().GetInstance <IMetrics>(), interceptor, _container.Create().GetInstance <IConnectionInformation>());

            return(decorator);
        }
        /// <summary>
        /// Creates the specified interceptor type.
        /// </summary>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        /// <remarks>The returned type will be wrapped by the message interceptor decorator for capturing metrics</remarks>
        public IMessageInterceptor Create(Type type)
        {
            var interceptor = (IMessageInterceptor)_container.Create().GetInstance(type);

            //HACK for now - it's not clear to me if simple injector supports this pattern
            var decorator  = new MessageInterceptorDecorator(_container.Create().GetInstance <IMetrics>(), interceptor, _container.Create().GetInstance <IConnectionInformation>());
            var decorator2 = new Trace.Decorator.MessageInterceptorDecorator(decorator, _container.Create().GetInstance <ITracer>(), _container.Create().GetInstance <IStandardHeaders>());

            return(decorator2);
        }