public SubscriptionToken SubscribeForMessage <T>(PID subscriber, bool subscribeOnParent, RoutingFilter filter = null) where T : ActorMessage
        {
            if (subscribeOnParent)
            {
                subscriber = _actorFactory.GetParentActor(subscriber);
            }

            var sub = GetSubscription <T>(subscriber);

            if (!_subscriptionCahce.Add(sub))
            {
                return(SubscriptionToken.Empty);
            }

            return(_eventAggregator.Subscribe <T>(message => _actorFactory.Context.Send(subscriber, message.Message), filter));
        }