public IDisposable Run()
            {
                this.length = this.sources.Length;
                if (this.length == 0)
                {
                    this.OnNext(new T[0]);
                    try
                    {
                        this.observer.OnCompleted();
                    }
                    finally
                    {
                        base.Dispose();
                    }
                    return(Disposable.Empty);
                }
                this.completedCount = 0;
                this.values         = new T[this.length];
                IDisposable[] array = new IDisposable[this.length];
                for (int i = 0; i < this.length; i++)
                {
                    IObservable <T> observable = this.sources[i];
                    WhenAllObservable <T> .WhenAll.WhenAllCollectionObserver observer = new WhenAllObservable <T> .WhenAll.WhenAllCollectionObserver(this, i);

                    array[i] = observable.Subscribe(observer);
                }
                return(StableCompositeDisposable.CreateUnsafe(array));
            }
 public WhenAllCollectionObserver(WhenAllObservable <T> .WhenAll_ parent, int index)
 {
     this.parent = parent;
     this.index  = index;
 }