|  | @@ -294,875 +294,875 @@ namespace System.Reactive.Joins
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, 
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver,eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -           var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               twelfthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -           var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | -           var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -           var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | -           var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | -           var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
 | 
	
		
			
				|  |  | -               firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, 
 | 
	
		
			
				|  |  | -               seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, 
 | 
	
		
			
				|  |  | -               tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | -               fourteenthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -           var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | -           var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | -           var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | -           var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
 | 
	
		
			
				|  |  | -               firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | -               seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | -               tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | -               fourteenthJoinObserver, fifteenthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | -   internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | -   {
 | 
	
		
			
				|  |  | -       internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Expression { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> expression,
 | 
	
		
			
				|  |  | -                     Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           Expression = expression;
 | 
	
		
			
				|  |  | -           Selector = selector;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -       internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | -                                             IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | -       {
 | 
	
		
			
				|  |  | -           var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | -           var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | -           var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | -           var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | -           var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | -           var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | -           var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | -           var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | -           var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | -           var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | -           var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | -           var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | -           var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | -           var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | -           var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | -           var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError);
 | 
	
		
			
				|  |  | -           var sixteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixteenth, onError);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
 | 
	
		
			
				|  |  | -               firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | -               fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | -               seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | -               tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | -               twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | -               fourteenthJoinObserver, fifteenthJoinObserver,
 | 
	
		
			
				|  |  | -               sixteenthJoinObserver,
 | 
	
		
			
				|  |  | -               (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth) =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   var result = default(TResult);
 | 
	
		
			
				|  |  | -                   try
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth);
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   catch (Exception exception)
 | 
	
		
			
				|  |  | -                   {
 | 
	
		
			
				|  |  | -                       observer.OnError(exception);
 | 
	
		
			
				|  |  | -                       return;
 | 
	
		
			
				|  |  | -                   }
 | 
	
		
			
				|  |  | -                   observer.OnNext(result);
 | 
	
		
			
				|  |  | -               },
 | 
	
		
			
				|  |  | -               () =>
 | 
	
		
			
				|  |  | -               {
 | 
	
		
			
				|  |  | -                   firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   fifteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   sixteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | -                   deactivate(activePlan);
 | 
	
		
			
				|  |  | -               });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -           firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           fifteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           sixteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | -           return activePlan;
 | 
	
		
			
				|  |  | -       }
 | 
	
		
			
				|  |  | -   }
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +            var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                twelfthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +            var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | +            var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver, seventhJoinObserver, eighthJoinObserver, ninthJoinObserver, tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +            var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | +            var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | +            var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
 | 
	
		
			
				|  |  | +                firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | +                seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | +                tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | +                fourteenthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +            var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | +            var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | +            var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | +            var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
 | 
	
		
			
				|  |  | +                firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | +                seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | +                tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | +                fourteenthJoinObserver, fifteenthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +    internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> : Plan<TResult>
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        internal Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Expression { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> Selector { get; private set; }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal Plan(Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> expression,
 | 
	
		
			
				|  |  | +                      Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            Expression = expression;
 | 
	
		
			
				|  |  | +            Selector = selector;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        internal override ActivePlan Activate(Dictionary<object, IJoinObserver> externalSubscriptions,
 | 
	
		
			
				|  |  | +                                              IObserver<TResult> observer, Action<ActivePlan> deactivate)
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            var onError = new Action<Exception>(observer.OnError);
 | 
	
		
			
				|  |  | +            var firstJoinObserver = CreateObserver(externalSubscriptions, Expression.First, onError);
 | 
	
		
			
				|  |  | +            var secondJoinObserver = CreateObserver(externalSubscriptions, Expression.Second, onError);
 | 
	
		
			
				|  |  | +            var thirdJoinObserver = CreateObserver(externalSubscriptions, Expression.Third, onError);
 | 
	
		
			
				|  |  | +            var fourthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourth, onError);
 | 
	
		
			
				|  |  | +            var fifthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifth, onError);
 | 
	
		
			
				|  |  | +            var sixthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixth, onError);
 | 
	
		
			
				|  |  | +            var seventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Seventh, onError);
 | 
	
		
			
				|  |  | +            var eighthJoinObserver = CreateObserver(externalSubscriptions, Expression.Eighth, onError);
 | 
	
		
			
				|  |  | +            var ninthJoinObserver = CreateObserver(externalSubscriptions, Expression.Ninth, onError);
 | 
	
		
			
				|  |  | +            var tenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Tenth, onError);
 | 
	
		
			
				|  |  | +            var eleventhJoinObserver = CreateObserver(externalSubscriptions, Expression.Eleventh, onError);
 | 
	
		
			
				|  |  | +            var twelfthJoinObserver = CreateObserver(externalSubscriptions, Expression.Twelfth, onError);
 | 
	
		
			
				|  |  | +            var thirteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Thirteenth, onError);
 | 
	
		
			
				|  |  | +            var fourteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fourteenth, onError);
 | 
	
		
			
				|  |  | +            var fifteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Fifteenth, onError);
 | 
	
		
			
				|  |  | +            var sixteenthJoinObserver = CreateObserver(externalSubscriptions, Expression.Sixteenth, onError);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            var activePlan = default(ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            activePlan = new ActivePlan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
 | 
	
		
			
				|  |  | +                firstJoinObserver, secondJoinObserver, thirdJoinObserver,
 | 
	
		
			
				|  |  | +                fourthJoinObserver, fifthJoinObserver, sixthJoinObserver,
 | 
	
		
			
				|  |  | +                seventhJoinObserver, eighthJoinObserver, ninthJoinObserver,
 | 
	
		
			
				|  |  | +                tenthJoinObserver, eleventhJoinObserver,
 | 
	
		
			
				|  |  | +                twelfthJoinObserver, thirteenthJoinObserver,
 | 
	
		
			
				|  |  | +                fourteenthJoinObserver, fifteenthJoinObserver,
 | 
	
		
			
				|  |  | +                sixteenthJoinObserver,
 | 
	
		
			
				|  |  | +                (first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth) =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    var result = default(TResult);
 | 
	
		
			
				|  |  | +                    try
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        result = Selector(first, second, third, fourth, fifth, sixth, seventh, eighth, ninth, tenth, eleventh, twelfth, thirteenth, fourteenth, fifteenth, sixteenth);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    catch (Exception exception)
 | 
	
		
			
				|  |  | +                    {
 | 
	
		
			
				|  |  | +                        observer.OnError(exception);
 | 
	
		
			
				|  |  | +                        return;
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    observer.OnNext(result);
 | 
	
		
			
				|  |  | +                },
 | 
	
		
			
				|  |  | +                () =>
 | 
	
		
			
				|  |  | +                {
 | 
	
		
			
				|  |  | +                    firstJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    secondJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirdJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    seventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eighthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    ninthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    tenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    eleventhJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    twelfthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    thirteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fourteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    fifteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    sixteenthJoinObserver.RemoveActivePlan(activePlan);
 | 
	
		
			
				|  |  | +                    deactivate(activePlan);
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            firstJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            secondJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirdJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            seventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eighthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            ninthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            tenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            eleventhJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            twelfthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            thirteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fourteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            fifteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            sixteenthJoinObserver.AddActivePlan(activePlan);
 | 
	
		
			
				|  |  | +            return activePlan;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |