/// <summary>
        /// Builds the message handler chain
        /// </summary>
        /// <typeparam name="TMessageType">The message type
        /// </typeparam>
        /// <param name="chainBuilder">
        /// The message Handler chain Builder.
        /// </param>
        /// <returns>
        /// The <see cref="Func&lt;TmessageType,CancellationToken,Task&gt;"/>.
        /// </returns>
        public static Func <TMessageType, CancellationToken, Task> BuildFunc <TMessageType>(this IChainBuilder <TMessageType> chainBuilder)
        {
            var subscriptionNotification = new ChainBuilderNotifier();
            var services = new ChainBuilderSetupServices(subscriptionNotification);
            var func     = chainBuilder.BuildFunc(services);

            var chain = new Chain <TMessageType>(func, ActionHelpers.NoAction);

            subscriptionNotification.Notify(chain);

            return(func);
        }