internal bool IsRegistered(object instance)
 {
     if (Publish == null)
     {
         return(false);
     }
     //
     return((from item in Publish.GetInvocationList() where item.Target == instance select item).Count() > 0);
 }
 internal bool IsRegistered(Type type)
 {
     if (Publish == null)
     {
         return(false);
     }
     //
     return((from item in Publish.GetInvocationList() where item.Target == null & item.Method.DeclaringType == type select item).Count() > 0);
 }
        public void Broadcast(TEvent Event,
                              TSubject Receiver,
                              TObject Object)
        {
            int ReceiverHash = Receiver.GetHashCode();

            foreach (StreamEvent p in Publish.GetInvocationList())
            {
                int TargetHash = Target(p);

                if (!ObjectRegistry.ContainsKey(TargetHash))
                {
                    continue;
                }

                foreach (var Sub in ObjectRegistry[TargetHash].Subscriptions)
                {
                    if (Validate(Sub, ReceiverHash, TargetHash, Receiver))
                    {
                        p?.Invoke(Event, Receiver, Object);
                    }
                }
            }
        }