void InnerComplete(ZipSubscriber inner)
 {
     if (!inner.done)
     {
         Volatile.Write(ref inner.done, true);
         Drain();
     }
 }
 void InnerError(ZipSubscriber inner, Exception cause)
 {
     if (!inner.done)
     {
         ExceptionHelper.AddException(ref error, cause);
         Volatile.Write(ref inner.done, true);
         Drain();
     }
 }
            internal ZipSubscription(IFlowableSubscriber <R> actual, Func <T[], R> zipper, int n, int prefetch)
            {
                this.actual   = actual;
                this.zipper   = zipper;
                this.prefetch = prefetch;
                var s = new ZipSubscriber[n];

                for (int i = 0; i < n; i++)
                {
                    s[i] = new ZipSubscriber(this, prefetch);
                }
                this.subscribers = s;
                this.current     = new T[n];
                this.hasValue    = new bool[n];
            }