public override void Subscribe(IFlowableSubscriber <T> subscriber)
        {
            var s      = sources;
            var parent = new AmbSubscription(subscriber, s.Length);

            subscriber.OnSubscribe(parent);
            parent.Subscribe(s);
        }
        public void Subscribe(ISubscriber <T> s)
        {
            int n;

            IPublisher <T>[] a;

            if (!MultiSourceHelper.ToArray(sources, sourcesEnumerable, s, out n, out a))
            {
                return;
            }

            if (n == 0)
            {
                EmptySubscription <T> .Complete(s);

                return;
            }
            else
            if (n == 1)
            {
                a[0].Subscribe(s);
                return;
            }

            if (s is IConditionalSubscriber <T> )
            {
                AmbConditionalSubscription parent = new AmbConditionalSubscription((IConditionalSubscriber <T>)s, n);

                s.OnSubscribe(parent);

                parent.Subscribe(a, n);
            }
            else
            {
                AmbSubscription parent = new AmbSubscription(s, n);

                s.OnSubscribe(parent);

                parent.Subscribe(a, n);
            }
        }