/// <summary>
        /// The SameValueFilterArrow will not allow to send two
        /// consecutive identical messages twice.
        /// </summary>
        /// <param name="ArrowSender">The sender of the messages/objects.</param>
        /// <param name="Recipient">A recipient of the processed messages.</param>
        /// <param name="Recipients">Further recipients of the processed messages.</param>
        public static SameValueFilterArrow <TMessage> SameValueFilter <TMessage>(this IArrowSender <TMessage> ArrowSender, IArrowReceiver <TMessage> Recipient, params IArrowReceiver <TMessage>[] Recipients)
            where TMessage : IEquatable <TMessage>
        {
            var _SameValueFilterArrow = new SameValueFilterArrow <TMessage>(Recipient, Recipients);

            ArrowSender.OnMessageAvailable += _SameValueFilterArrow.ReceiveMessage;
            return(_SameValueFilterArrow);
        }
        /// <summary>
        /// The SameValueFilterArrow will not allow to send two
        /// consecutive identical messages twice.
        /// </summary>
        /// <param name="ArrowSender">The sender of the messages/objects.</param>
        /// <param name="LastMessage">Sets the initial value of LastMessage.</param>
        public static SameValueFilterArrow <TMessage> SameValueFilter <TMessage>(this IArrowSender <TMessage> ArrowSender, TMessage LastMessage)
            where TMessage : IEquatable <TMessage>
        {
            var _SameValueFilterArrow = new SameValueFilterArrow <TMessage>(LastMessage);

            ArrowSender.OnMessageAvailable += _SameValueFilterArrow.ReceiveMessage;
            return(_SameValueFilterArrow);
        }