public void Send(Message message)
        {
            Action <HandlerInfo, Message> Msg_PtToPt = (HandlerInfo handler, Message msg) =>
            {
                (handler.EventType.Equals(msg.EventType)).IfTrue(() =>
                {
                    _PendingDelivery.Add(new MessageDelivery(handler, msg));
                });
            };
            Action <HandlerInfo, Message> Msg_Observer = (HandlerInfo handler, Message msg) =>
            {
                _PendingDelivery.Add(new MessageDelivery(handler, msg));
            };
            Action <HandlerInfo, Message> Msg_RoleEvent = (HandlerInfo handler, Message msg) =>
            {
                _PendingDelivery.Add(new MessageDelivery(handler, msg));
            };

            Action UponNoRecipients = () =>
            {
                message.HasInstance.IfTrue(() =>
                {
                    _Logger.LogAt(LogLevel.LL_DebugFramework, "Unhandled message:");
                    message.SenderInstance.ReceiveUnhandled(message);
                }).IfFalse(() =>
                {
                    //(msg.ActualSender != null).IfTrue(() =>{
                    message.ActualSender.ReceiveUnhandled(message);
                    //});
                    _Logger.LogAt(LogLevel.LL_DebugFramework, "Could not match handlers for message [" + message + "]");
                });
            };

            MatchHandlers(message, Msg_PtToPt, Msg_Observer, Msg_RoleEvent, UponNoRecipients);
        }
 public void SetObservedObject(IMessageSubscriber ObservedObject)
 {
     _ObservedSet.Add(ObservedObject);
 }