QueryablePattern<TSource1, TSource2, TSource3, TSource4, TSource5, TSource6, TSource7, TSource8, TSource9, TSource10, TSource11>
                
                    public class QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11> : 
QueryablePattern
                 
                
Represents a join pattern over eleven observable sequences.
            
                 
                
using System.
Linq.
Expressions;
using System.
Reactive.
Linq;
using System.
Reflection;
namespace System.
Reactive.
Joins
{
    
public class QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11> : 
QueryablePattern
    {
        
internal QueryablePattern(
Expression expression)
            : 
base(
expression)
        {
        }
        
public QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11, 
TSource12> 
And<
TSource12>(
IObservable<
TSource12> 
other)
        {
            
if (
other == 
null)
                
throw new ArgumentNullException(
"other");
            
MethodInfo method = 
typeof(
QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11>).
GetMethod(
"And").
MakeGenericMethod(
typeof(
TSource12));
            
return new QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11, 
TSource12>((
Expression)
Expression.
Call(
base.
Expression, 
method, 
Qbservable.
GetSourceExpression<
TSource12>(
other)));
        }
        
public QueryablePlan<
TResult> 
Then<
TResult>(
Expression<
Func<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11, 
TResult>> 
selector)
        {
            
if (
selector == 
null)
                
throw new ArgumentNullException(
"selector");
            
MethodInfo method = 
typeof(
QueryablePattern<
TSource1, 
TSource2, 
TSource3, 
TSource4, 
TSource5, 
TSource6, 
TSource7, 
TSource8, 
TSource9, 
TSource10, 
TSource11>).
GetMethod(
"Then").
MakeGenericMethod(
typeof(
TResult));
            
return new QueryablePlan<
TResult>((
Expression)
Expression.
Call(
base.
Expression, 
method, 
selector));
        }
    }
}