Plan<TResult>
Represents an execution plan for join patterns.
            
                using System.Collections.Generic;
using System.Runtime.CompilerServices;
namespace System.Reactive.Joins
{
    [System.Runtime.CompilerServices.NullableContext(1)]
    [System.Runtime.CompilerServices.Nullable(0)]
    public abstract class Plan<[System.Runtime.CompilerServices.Nullable(2)] TResult>
    {
        internal Plan()
        {
        }
        internal abstract ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions, IObserver<TResult> observer, Action<ActivePlan> deactivate);
        internal static JoinObserver<TSource> CreateObserver<[System.Runtime.CompilerServices.Nullable(2)] TSource>(Dictionary<object, IJoinObserver> externalSubscriptions, IObservable<TSource> observable, Action<Exception> onError)
        {
            JoinObserver<TSource> joinObserver;
            if (!externalSubscriptions.TryGetValue((object)observable, out IJoinObserver value)) {
                joinObserver = new JoinObserver<TSource>(observable, onError);
                externalSubscriptions.Add((object)observable, (IJoinObserver)joinObserver);
            } else
                joinObserver = (JoinObserver<TSource>)value;
            return joinObserver;
        }
    }
}