public void Subscribe <TMessage>(IVphtHandleMessage <TMessage> instance, Func <TMessage, bool> selector)
        {
            lock (handlers)
            {
                if (handlers.Any(x => x.Matches(instance)))
                {
                    return;
                }

                handlers.Add(new Handler(instance));
            }
        }
        public virtual void Unsubscribe <TMessage>(IVphtHandleMessage <TMessage> instance)
        {
            lock (handlers)
            {
                var found = handlers.FirstOrDefault(x => x.Matches(instance));

                if (found != null)
                {
                    handlers.Remove(found);
                }
            }
        }
 public void Subscribe <TMessage>(IVphtHandleMessage <TMessage> handler)
 {
     this.Subscribe(handler, m => true);
 }