<PackageReference Include="System.Reactive" Version="6.0.1-preview.1" />

QueryLanguageEx

using System.Collections.Generic; using System.Linq; using System.Reactive.Concurrency; using System.Reactive.Disposables; using System.Reactive.Linq.ObservableImpl; using System.Reactive.Subjects; using System.Runtime.CompilerServices; namespace System.Reactive.Linq { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal class QueryLanguageEx : IQueryLanguageEx { [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] private sealed class CreateWithEnumerableObservable<[System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult> { private readonly Func<IObserver<TResult>, IEnumerable<IObservable<object>>> _iteratorMethod; public CreateWithEnumerableObservable(Func<IObserver<TResult>, IEnumerable<IObservable<object>>> iteratorMethod) { _iteratorMethod = iteratorMethod; } protected override IDisposable SubscribeCore(IObserver<TResult> observer) { return Observable.Concat<object>(_iteratorMethod(observer)).Subscribe(new TerminalOnlyObserver<TResult>(observer)); } } [System.Runtime.CompilerServices.Nullable(0)] private sealed class TerminalOnlyObserver<[System.Runtime.CompilerServices.Nullable(2)] TResult> : IObserver<object> { private readonly IObserver<TResult> _observer; public TerminalOnlyObserver(IObserver<TResult> observer) { _observer = observer; } public void OnCompleted() { _observer.OnCompleted(); } public void OnError(Exception error) { _observer.OnError(error); } public void OnNext(object value) { } } [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] private sealed class CreateWithOnlyEnumerableObservable<[System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult> { private readonly Func<IEnumerable<IObservable<object>>> _iteratorMethod; public CreateWithOnlyEnumerableObservable(Func<IEnumerable<IObservable<object>>> iteratorMethod) { _iteratorMethod = iteratorMethod; } protected override IDisposable SubscribeCore(IObserver<TResult> observer) { return Observable.Concat<object>(_iteratorMethod()).Subscribe(new TerminalOnlyObserver<TResult>(observer)); } } [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] private sealed class ExpandObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource> : ObservableBase<TSource> { private readonly IObservable<TSource> _source; private readonly Func<TSource, IObservable<TSource>> _selector; private readonly IScheduler _scheduler; public ExpandObservable(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector, IScheduler scheduler) { _source = source; _selector = selector; _scheduler = scheduler; } protected override IDisposable SubscribeCore(IObserver<TSource> observer) { object outGate = new object(); Queue<IObservable<TSource>> q = new Queue<IObservable<TSource>>(); SerialDisposable i = new SerialDisposable(); CompositeDisposable d = new CompositeDisposable { i }; int activeCount = 0; bool isAcquired = false; lock (q) { q.Enqueue(_source); activeCount++; } <>c__DisplayClass4_0 <>c__DisplayClass4_; <>c__DisplayClass4_.<SubscribeCore>g__ensureActive|0(); return d; } } [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1, 1 })] private sealed class ForkJoinObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource> : ObservableBase<TSource[]> { private readonly IEnumerable<IObservable<TSource>> _sources; public ForkJoinObservable(IEnumerable<IObservable<TSource>> sources) { _sources = sources; } protected override IDisposable SubscribeCore(IObserver<TSource[]> observer) { IObservable<TSource>[] array = Enumerable.ToArray<IObservable<TSource>>(_sources); int num = array.Length; if (num == 0) { observer.OnCompleted(); return Disposable.Empty; } CompositeDisposable group = new CompositeDisposable(array.Length); object gate = new object(); bool finished = false; bool[] hasResults = new bool[num]; bool[] hasCompleted = new bool[num]; List<TSource> results = new List<TSource>(num); lock (gate) { for (int i = 0; i < num; i++) { int currentIndex = i; IObservable<TSource> source = array[i]; results.Add(default(TSource)); group.Add(ObservableExtensions.Subscribe<TSource>(source, (Action<TSource>)delegate(TSource value) { lock (gate) { if (!finished) { hasResults[currentIndex] = true; results[currentIndex] = value; } } }, (Action<Exception>)delegate(Exception error) { lock (gate) { finished = true; observer.OnError(error); group.Dispose(); } }, (Action)delegate { lock (gate) { if (!finished) { if (!hasResults[currentIndex]) observer.OnCompleted(); else { hasCompleted[currentIndex] = true; bool[] array2 = hasCompleted; for (int j = 0; j < array2.Length; j++) { if (!array2[j]) return; } finished = true; observer.OnNext(results.ToArray()); observer.OnCompleted(); } } } })); } } return group; } } [System.Runtime.CompilerServices.Nullable(0)] private class ChainObservable<[System.Runtime.CompilerServices.Nullable(2)] T> : ISubject<IObservable<T>, T>, IObserver<IObservable<T>>, IObservable<T> { private readonly T _head; private readonly AsyncSubject<IObservable<T>> _tail = new AsyncSubject<IObservable<T>>(); public ChainObservable(T head) { _head = head; } public IDisposable Subscribe(IObserver<T> observer) { CompositeDisposable compositeDisposable = new CompositeDisposable(); compositeDisposable.Add(Scheduler.ScheduleAction<(IObserver<T>, CompositeDisposable, ChainObservable<T>)>((IScheduler)CurrentThreadScheduler.Instance, (observer, compositeDisposable, this), (Action<(IObserver<T>, CompositeDisposable, ChainObservable<T>)>)delegate((IObserver<T> observer, CompositeDisposable g, ChainObservable<T> this) state) { state.observer.OnNext(state.this._head); state.g.Add(Observable.Merge<T>((IObservable<IObservable<T>>)state.this._tail).Subscribe(state.observer)); })); return compositeDisposable; } public void OnCompleted() { OnNext(Observable.Empty<T>()); } public void OnError(Exception error) { OnNext(Observable.Throw<T>(error)); } public void OnNext(IObservable<T> value) { _tail.OnNext(value); _tail.OnCompleted(); } } [System.Runtime.CompilerServices.Nullable(new byte[] { 0, 1 })] private sealed class CombineObservable<[System.Runtime.CompilerServices.Nullable(2)] TLeft, [System.Runtime.CompilerServices.Nullable(2)] TRight, [System.Runtime.CompilerServices.Nullable(2)] TResult> : ObservableBase<TResult> { private readonly IObservable<TLeft> _leftSource; private readonly IObservable<TRight> _rightSource; private readonly Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> _combinerSelector; public CombineObservable(IObservable<TLeft> leftSource, IObservable<TRight> rightSource, Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> combinerSelector) { _leftSource = leftSource; _rightSource = rightSource; _combinerSelector = combinerSelector; } protected override IDisposable SubscribeCore(IObserver<TResult> observer) { SingleAssignmentDisposable singleAssignmentDisposable = new SingleAssignmentDisposable(); SingleAssignmentDisposable singleAssignmentDisposable2 = new SingleAssignmentDisposable(); IObserver<Either<Notification<TLeft>, Notification<TRight>>> observer2 = _combinerSelector(observer, singleAssignmentDisposable, singleAssignmentDisposable2); object gate = new object(); singleAssignmentDisposable.Disposable = Observable.Synchronize<Either<Notification<TLeft>, Notification<TRight>>>(Observable.Select<Notification<TLeft>, Either<Notification<TLeft>, Notification<TRight>>>(Observable.Materialize<TLeft>(_leftSource), (Func<Notification<TLeft>, Either<Notification<TLeft>, Notification<TRight>>>)((Notification<TLeft> x) => Either<Notification<TLeft>, Notification<TRight>>.CreateLeft(x))), gate).Subscribe(observer2); singleAssignmentDisposable2.Disposable = Observable.Synchronize<Either<Notification<TLeft>, Notification<TRight>>>(Observable.Select<Notification<TRight>, Either<Notification<TLeft>, Notification<TRight>>>(Observable.Materialize<TRight>(_rightSource), (Func<Notification<TRight>, Either<Notification<TLeft>, Notification<TRight>>>)((Notification<TRight> x) => Either<Notification<TLeft>, Notification<TRight>>.CreateRight(x))), gate).Subscribe(observer2); return StableCompositeDisposable.Create(singleAssignmentDisposable, singleAssignmentDisposable2); } } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1 })] public virtual IObservable<(TSource1, TSource2)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2>(IObservable<TSource1> source1, IObservable<TSource2> source2) { return new CombineLatest<TSource1, TSource2, (TSource1, TSource2)>(source1, source2, (Func<TSource1, TSource2, (TSource1, TSource2)>)((TSource1 t1, TSource2 t2) => (t1, t2))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3) { return new CombineLatest<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>(source1, source2, source3, (Func<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>)((TSource1 t1, TSource2 t2, TSource3 t3) => (t1, t2, t3))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4) { return new CombineLatest<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>(source1, source2, source3, source4, (Func<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4) => (t1, t2, t3, t4))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5) { return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>(source1, source2, source3, source4, source5, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5) => (t1, t2, t3, t4, t5))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6) { return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>(source1, source2, source3, source4, source5, source6, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6) => (t1, t2, t3, t4, t5, t6))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7) { return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>(source1, source2, source3, source4, source5, source6, source7, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7) => (t1, t2, t3, t4, t5, t6, t7))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)> CombineLatest<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7, [System.Runtime.CompilerServices.Nullable(2)] TSource8>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7, IObservable<TSource8> source8) { return new CombineLatest<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>(source1, source2, source3, source4, source5, source6, source7, source8, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7, TSource8 t8) => (t1, t2, t3, t4, t5, t6, t7, t8))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1 })] public virtual IObservable<(TSource1, TSource2)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2>(IObservable<TSource1> source1, IObservable<TSource2> source2) { return new Zip<TSource1, TSource2, (TSource1, TSource2)>.Observable(source1, source2, (Func<TSource1, TSource2, (TSource1, TSource2)>)((TSource1 t1, TSource2 t2) => (t1, t2))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3) { return new Zip<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>(source1, source2, source3, (Func<TSource1, TSource2, TSource3, (TSource1, TSource2, TSource3)>)((TSource1 t1, TSource2 t2, TSource3 t3) => (t1, t2, t3))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4) { return new Zip<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>(source1, source2, source3, source4, (Func<TSource1, TSource2, TSource3, TSource4, (TSource1, TSource2, TSource3, TSource4)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4) => (t1, t2, t3, t4))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5) { return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>(source1, source2, source3, source4, source5, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, (TSource1, TSource2, TSource3, TSource4, TSource5)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5) => (t1, t2, t3, t4, t5))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6) { return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>(source1, source2, source3, source4, source5, source6, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6) => (t1, t2, t3, t4, t5, t6))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7) { return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>(source1, source2, source3, source4, source5, source6, source7, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7) => (t1, t2, t3, t4, t5, t6, t7))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1 })] public virtual IObservable<(TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TSource1, [System.Runtime.CompilerServices.Nullable(2)] TSource2, [System.Runtime.CompilerServices.Nullable(2)] TSource3, [System.Runtime.CompilerServices.Nullable(2)] TSource4, [System.Runtime.CompilerServices.Nullable(2)] TSource5, [System.Runtime.CompilerServices.Nullable(2)] TSource6, [System.Runtime.CompilerServices.Nullable(2)] TSource7, [System.Runtime.CompilerServices.Nullable(2)] TSource8>(IObservable<TSource1> source1, IObservable<TSource2> source2, IObservable<TSource3> source3, IObservable<TSource4> source4, IObservable<TSource5> source5, IObservable<TSource6> source6, IObservable<TSource7> source7, IObservable<TSource8> source8) { return new Zip<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>(source1, source2, source3, source4, source5, source6, source7, source8, (Func<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, (TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8)>)((TSource1 t1, TSource2 t2, TSource3 t3, TSource4 t4, TSource5 t5, TSource6 t6, TSource7 t7, TSource8 t8) => (t1, t2, t3, t4, t5, t6, t7, t8))); } public virtual IObservable<TResult> Create<[System.Runtime.CompilerServices.Nullable(2)] TResult>(Func<IObserver<TResult>, IEnumerable<IObservable<object>>> iteratorMethod) { return new CreateWithEnumerableObservable<TResult>(iteratorMethod); } public virtual IObservable<Unit> Create(Func<IEnumerable<IObservable<object>>> iteratorMethod) { return new CreateWithOnlyEnumerableObservable<Unit>(iteratorMethod); } public virtual IObservable<TSource> Expand<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector, IScheduler scheduler) { return new ExpandObservable<TSource>(source, selector, scheduler); } public virtual IObservable<TSource> Expand<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source, Func<TSource, IObservable<TSource>> selector) { return source.Expand(selector, SchedulerDefaults.Iteration); } public virtual IObservable<TResult> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TFirst> first, IObservable<TSecond> second, Func<TFirst, TSecond, TResult> resultSelector) { return Combine(first, second, delegate(IObserver<TResult> observer, IDisposable leftSubscription, IDisposable rightSubscription) { bool leftStopped = false; bool rightStopped = false; bool hasLeft = false; bool hasRight = false; TFirst lastLeft = (TFirst)default(TFirst); TSecond lastRight = (TSecond)default(TSecond); return new BinaryObserver<TFirst, TSecond>((Action<Notification<TFirst>>)delegate(Notification<TFirst> left) { switch (left.Kind) { case NotificationKind.OnNext: hasLeft = true; lastLeft = (TFirst)left.Value; break; case NotificationKind.OnError: rightSubscription.Dispose(); observer.OnError(left.Exception); break; case NotificationKind.OnCompleted: leftStopped = true; if (rightStopped) { if (!hasLeft) observer.OnCompleted(); else if (!hasRight) { observer.OnCompleted(); } else { TResult value2; try { value2 = resultSelector((TFirst)lastLeft, (TSecond)lastRight); } catch (Exception error2) { observer.OnError(error2); return; } observer.OnNext(value2); observer.OnCompleted(); } } break; } }, (Action<Notification<TSecond>>)delegate(Notification<TSecond> right) { switch (right.Kind) { case NotificationKind.OnNext: hasRight = true; lastRight = (TSecond)right.Value; break; case NotificationKind.OnError: leftSubscription.Dispose(); observer.OnError(right.Exception); break; case NotificationKind.OnCompleted: rightStopped = true; if (leftStopped) { if (!hasLeft) observer.OnCompleted(); else if (!hasRight) { observer.OnCompleted(); } else { TResult value; try { value = resultSelector((TFirst)lastLeft, (TSecond)lastRight); } catch (Exception error) { observer.OnError(error); return; } observer.OnNext(value); observer.OnCompleted(); } } break; } }); }); } public virtual IObservable<TSource[]> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TSource>(params IObservable<TSource>[] sources) { return ((IEnumerable<IObservable<TSource>>)sources).ForkJoin(); } public virtual IObservable<TSource[]> ForkJoin<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IEnumerable<IObservable<TSource>> sources) { return new ForkJoinObservable<TSource>(sources); } public virtual IObservable<TResult> Let<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, IObservable<TResult>> function) { return function(source); } public virtual IObservable<TResult> ManySelect<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, TResult> selector) { return ManySelect(source, selector, DefaultScheduler.Instance); } public virtual IObservable<TResult> ManySelect<[System.Runtime.CompilerServices.Nullable(2)] TSource, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TSource> source, Func<IObservable<TSource>, TResult> selector, IScheduler scheduler) { return Observable.Defer(delegate { ChainObservable<TSource> chain = null; return Observable.Select<IObservable<TSource>, TResult>(Observable.ObserveOn<IObservable<TSource>>(Observable.Do<IObservable<TSource>>(Observable.Select<TSource, IObservable<TSource>>(source, (Func<TSource, IObservable<TSource>>)delegate(TSource x) { ChainObservable<TSource> chainObservable = new ChainObservable<TSource>(x); ((ChainObservable<TSource>)chain)?.OnNext((IObservable<TSource>)chainObservable); chain = (ChainObservable<TSource>)chainObservable; return chainObservable; }), (Action<IObservable<TSource>>)delegate { }, (Action<Exception>)delegate(Exception exception) { ((ChainObservable<TSource>)chain)?.OnError(exception); }, (Action)delegate { ((ChainObservable<TSource>)chain)?.OnCompleted(); }), scheduler), selector); }); } public virtual ListObservable<TSource> ToListObservable<[System.Runtime.CompilerServices.Nullable(2)] TSource>(IObservable<TSource> source) { return new ListObservable<TSource>(source); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1 })] public virtual IObservable<(TFirst First, TSecond Second)> WithLatestFrom<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond>(IObservable<TFirst> first, IObservable<TSecond> second) { return new WithLatestFrom<TFirst, TSecond, (TFirst, TSecond)>(first, second, (Func<TFirst, TSecond, (TFirst, TSecond)>)((TFirst t1, TSecond t2) => (t1, t2))); } [return: System.Runtime.CompilerServices.Nullable(new byte[] { 1, 0, 1, 1 })] public virtual IObservable<(TFirst First, TSecond Second)> Zip<[System.Runtime.CompilerServices.Nullable(2)] TFirst, [System.Runtime.CompilerServices.Nullable(2)] TSecond>(IObservable<TFirst> first, IEnumerable<TSecond> second) { return new Zip<TFirst, TSecond, (TFirst, TSecond)>.Enumerable(first, second, (Func<TFirst, TSecond, (TFirst, TSecond)>)((TFirst t1, TSecond t2) => (t1, t2))); } private static IObservable<TResult> Combine<[System.Runtime.CompilerServices.Nullable(2)] TLeft, [System.Runtime.CompilerServices.Nullable(2)] TRight, [System.Runtime.CompilerServices.Nullable(2)] TResult>(IObservable<TLeft> leftSource, IObservable<TRight> rightSource, Func<IObserver<TResult>, IDisposable, IDisposable, IObserver<Either<Notification<TLeft>, Notification<TRight>>>> combinerSelector) { return new CombineObservable<TLeft, TRight, TResult>(leftSource, rightSource, combinerSelector); } } }