public override void Subscribe(IFlowableSubscriber <T> subscriber)
        {
            var parent = new TakeUntilSubscriber(subscriber);

            subscriber.OnSubscribe(parent);

            other.Subscribe(parent.other);
            source.Subscribe(parent);
        }
        public void Subscribe(ISubscriber <T> s)
        {
            TakeUntilHelper parent;

            if (s is IConditionalSubscriber <T> )
            {
                parent = new TakeUntilConditionalSubscriber((IConditionalSubscriber <T>)s);
            }
            else
            {
                parent = new TakeUntilSubscriber(s);
            }

            var until = new UntilSubscriber(parent);

            s.OnSubscribe(parent);

            other.Subscribe(until);

            source.Subscribe(parent);
        }
 internal OtherSubscriber(TakeUntilSubscriber parent)
 {
     this.parent = parent;
 }