/// <summary>
        ///     Append a range of messages for each message passed through
        /// </summary>
        /// <typeparam name="TMessageType">The chain message type</typeparam>
        /// <param name="chainBuilder">The mch builder</param>
        /// <param name="messageSelector">The function used to create the new message</param>
        /// <returns>The same mch builder</returns>
        public static IChainBuilder <TMessageType> AppendMany <TMessageType>(
            this IChainBuilder <TMessageType> chainBuilder,
            Func <TMessageType, CancellationToken, Task <IEnumerable <TMessageType> > > messageSelector)
        {
            if (messageSelector == null)
            {
                return(chainBuilder);
            }

            return(chainBuilder.AppendMany(c => c.Select(messageSelector)));
        }