PageRenderTime 73ms CodeModel.GetById 22ms RepoModel.GetById 1ms app.codeStats 0ms

/System.Reactive/System.Reactive.Joins/System.Reactive.Joins.generated.cs

https://github.com/gshackles/mono-reactive
C# | 2489 lines | 2137 code | 346 blank | 6 comment | 1630 complexity | 0af2e3ecbc481ef17c659e45acba4bab MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Linq.Expressions;
  5. using System.Reactive;
  6. using System.Reactive.Disposables;
  7. using System.Reactive.Linq;
  8. using System.Reactive.Subjects;
  9. namespace System.Reactive.Joins
  10. {
  11. public class Pattern<T1, T2> : Pattern
  12. {
  13. internal Pattern (IObservable<T1> t1, IObservable<T2> t2)
  14. {
  15. this.t1 = t1;
  16. this.t2 = t2;
  17. }
  18. IObservable<T1> t1;
  19. IObservable<T2> t2;
  20. public Pattern<T1, T2, T3> And<T3> (IObservable<T3> other)
  21. {
  22. return new Pattern<T1, T2, T3> (t1, t2, other);
  23. }
  24. public Plan<TResult> Then<TResult> (Func<T1, T2, TResult> selector)
  25. {
  26. return new Plan<T1, T2, TResult> (this, selector);
  27. }
  28. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, TResult> selector)
  29. {
  30. var sub = new Subject<TResult> ();
  31. bool [] done = new bool [2];
  32. var q1 = new Queue<T1> ();
  33. var q2 = new Queue<T2> ();
  34. t1.Subscribe (Observer.Create<T1> (t => {
  35. q1.Enqueue (t);
  36. if (q1.Count > 0 && q2.Count > 0)
  37. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue ()));
  38. }, (ex) => sub.OnError (ex), () => {
  39. done [0] = true;
  40. if (done.All (b => b))
  41. sub.OnCompleted ();
  42. }));
  43. t2.Subscribe (Observer.Create<T2> (t => {
  44. q2.Enqueue (t);
  45. if (q1.Count > 0 && q2.Count > 0)
  46. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue ()));
  47. }, (ex) => sub.OnError (ex), () => {
  48. done [1] = true;
  49. if (done.All (b => b))
  50. sub.OnCompleted ();
  51. }));
  52. return sub;
  53. }
  54. }
  55. internal class Plan<T1, T2, TResult> : Plan<TResult>
  56. {
  57. Pattern<T1, T2> pattern;
  58. Func<T1, T2, TResult> selector;
  59. public Plan (Pattern<T1, T2> pattern, Func<T1, T2, TResult> selector)
  60. {
  61. this.pattern = pattern;
  62. this.selector = selector;
  63. }
  64. internal override IObservable<TResult> AsObservable ()
  65. {
  66. return pattern.AsObservable<TResult> (selector);
  67. }
  68. }
  69. public class Pattern<T1, T2, T3> : Pattern
  70. {
  71. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3)
  72. {
  73. this.t1 = t1;
  74. this.t2 = t2;
  75. this.t3 = t3;
  76. }
  77. IObservable<T1> t1;
  78. IObservable<T2> t2;
  79. IObservable<T3> t3;
  80. public Pattern<T1, T2, T3, T4> And<T4> (IObservable<T4> other)
  81. {
  82. return new Pattern<T1, T2, T3, T4> (t1, t2, t3, other);
  83. }
  84. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, TResult> selector)
  85. {
  86. return new Plan<T1, T2, T3, TResult> (this, selector);
  87. }
  88. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, TResult> selector)
  89. {
  90. var sub = new Subject<TResult> ();
  91. bool [] done = new bool [3];
  92. var q1 = new Queue<T1> ();
  93. var q2 = new Queue<T2> ();
  94. var q3 = new Queue<T3> ();
  95. t1.Subscribe (Observer.Create<T1> (t => {
  96. q1.Enqueue (t);
  97. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  98. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  99. }, (ex) => sub.OnError (ex), () => {
  100. done [0] = true;
  101. if (done.All (b => b))
  102. sub.OnCompleted ();
  103. }));
  104. t2.Subscribe (Observer.Create<T2> (t => {
  105. q2.Enqueue (t);
  106. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  107. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  108. }, (ex) => sub.OnError (ex), () => {
  109. done [1] = true;
  110. if (done.All (b => b))
  111. sub.OnCompleted ();
  112. }));
  113. t3.Subscribe (Observer.Create<T3> (t => {
  114. q3.Enqueue (t);
  115. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0)
  116. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue ()));
  117. }, (ex) => sub.OnError (ex), () => {
  118. done [2] = true;
  119. if (done.All (b => b))
  120. sub.OnCompleted ();
  121. }));
  122. return sub;
  123. }
  124. }
  125. internal class Plan<T1, T2, T3, TResult> : Plan<TResult>
  126. {
  127. Pattern<T1, T2, T3> pattern;
  128. Func<T1, T2, T3, TResult> selector;
  129. public Plan (Pattern<T1, T2, T3> pattern, Func<T1, T2, T3, TResult> selector)
  130. {
  131. this.pattern = pattern;
  132. this.selector = selector;
  133. }
  134. internal override IObservable<TResult> AsObservable ()
  135. {
  136. return pattern.AsObservable<TResult> (selector);
  137. }
  138. }
  139. public class Pattern<T1, T2, T3, T4> : Pattern
  140. {
  141. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4)
  142. {
  143. this.t1 = t1;
  144. this.t2 = t2;
  145. this.t3 = t3;
  146. this.t4 = t4;
  147. }
  148. IObservable<T1> t1;
  149. IObservable<T2> t2;
  150. IObservable<T3> t3;
  151. IObservable<T4> t4;
  152. public Pattern<T1, T2, T3, T4, T5> And<T5> (IObservable<T5> other)
  153. {
  154. return new Pattern<T1, T2, T3, T4, T5> (t1, t2, t3, t4, other);
  155. }
  156. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, TResult> selector)
  157. {
  158. return new Plan<T1, T2, T3, T4, TResult> (this, selector);
  159. }
  160. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, TResult> selector)
  161. {
  162. var sub = new Subject<TResult> ();
  163. bool [] done = new bool [4];
  164. var q1 = new Queue<T1> ();
  165. var q2 = new Queue<T2> ();
  166. var q3 = new Queue<T3> ();
  167. var q4 = new Queue<T4> ();
  168. t1.Subscribe (Observer.Create<T1> (t => {
  169. q1.Enqueue (t);
  170. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  171. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  172. }, (ex) => sub.OnError (ex), () => {
  173. done [0] = true;
  174. if (done.All (b => b))
  175. sub.OnCompleted ();
  176. }));
  177. t2.Subscribe (Observer.Create<T2> (t => {
  178. q2.Enqueue (t);
  179. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  180. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  181. }, (ex) => sub.OnError (ex), () => {
  182. done [1] = true;
  183. if (done.All (b => b))
  184. sub.OnCompleted ();
  185. }));
  186. t3.Subscribe (Observer.Create<T3> (t => {
  187. q3.Enqueue (t);
  188. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  189. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  190. }, (ex) => sub.OnError (ex), () => {
  191. done [2] = true;
  192. if (done.All (b => b))
  193. sub.OnCompleted ();
  194. }));
  195. t4.Subscribe (Observer.Create<T4> (t => {
  196. q4.Enqueue (t);
  197. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0)
  198. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue ()));
  199. }, (ex) => sub.OnError (ex), () => {
  200. done [3] = true;
  201. if (done.All (b => b))
  202. sub.OnCompleted ();
  203. }));
  204. return sub;
  205. }
  206. }
  207. internal class Plan<T1, T2, T3, T4, TResult> : Plan<TResult>
  208. {
  209. Pattern<T1, T2, T3, T4> pattern;
  210. Func<T1, T2, T3, T4, TResult> selector;
  211. public Plan (Pattern<T1, T2, T3, T4> pattern, Func<T1, T2, T3, T4, TResult> selector)
  212. {
  213. this.pattern = pattern;
  214. this.selector = selector;
  215. }
  216. internal override IObservable<TResult> AsObservable ()
  217. {
  218. return pattern.AsObservable<TResult> (selector);
  219. }
  220. }
  221. public class Pattern<T1, T2, T3, T4, T5> : Pattern
  222. {
  223. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5)
  224. {
  225. this.t1 = t1;
  226. this.t2 = t2;
  227. this.t3 = t3;
  228. this.t4 = t4;
  229. this.t5 = t5;
  230. }
  231. IObservable<T1> t1;
  232. IObservable<T2> t2;
  233. IObservable<T3> t3;
  234. IObservable<T4> t4;
  235. IObservable<T5> t5;
  236. public Pattern<T1, T2, T3, T4, T5, T6> And<T6> (IObservable<T6> other)
  237. {
  238. return new Pattern<T1, T2, T3, T4, T5, T6> (t1, t2, t3, t4, t5, other);
  239. }
  240. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, TResult> selector)
  241. {
  242. return new Plan<T1, T2, T3, T4, T5, TResult> (this, selector);
  243. }
  244. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, TResult> selector)
  245. {
  246. var sub = new Subject<TResult> ();
  247. bool [] done = new bool [5];
  248. var q1 = new Queue<T1> ();
  249. var q2 = new Queue<T2> ();
  250. var q3 = new Queue<T3> ();
  251. var q4 = new Queue<T4> ();
  252. var q5 = new Queue<T5> ();
  253. t1.Subscribe (Observer.Create<T1> (t => {
  254. q1.Enqueue (t);
  255. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  256. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  257. }, (ex) => sub.OnError (ex), () => {
  258. done [0] = true;
  259. if (done.All (b => b))
  260. sub.OnCompleted ();
  261. }));
  262. t2.Subscribe (Observer.Create<T2> (t => {
  263. q2.Enqueue (t);
  264. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  265. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  266. }, (ex) => sub.OnError (ex), () => {
  267. done [1] = true;
  268. if (done.All (b => b))
  269. sub.OnCompleted ();
  270. }));
  271. t3.Subscribe (Observer.Create<T3> (t => {
  272. q3.Enqueue (t);
  273. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  274. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  275. }, (ex) => sub.OnError (ex), () => {
  276. done [2] = true;
  277. if (done.All (b => b))
  278. sub.OnCompleted ();
  279. }));
  280. t4.Subscribe (Observer.Create<T4> (t => {
  281. q4.Enqueue (t);
  282. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  283. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  284. }, (ex) => sub.OnError (ex), () => {
  285. done [3] = true;
  286. if (done.All (b => b))
  287. sub.OnCompleted ();
  288. }));
  289. t5.Subscribe (Observer.Create<T5> (t => {
  290. q5.Enqueue (t);
  291. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0)
  292. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue ()));
  293. }, (ex) => sub.OnError (ex), () => {
  294. done [4] = true;
  295. if (done.All (b => b))
  296. sub.OnCompleted ();
  297. }));
  298. return sub;
  299. }
  300. }
  301. internal class Plan<T1, T2, T3, T4, T5, TResult> : Plan<TResult>
  302. {
  303. Pattern<T1, T2, T3, T4, T5> pattern;
  304. Func<T1, T2, T3, T4, T5, TResult> selector;
  305. public Plan (Pattern<T1, T2, T3, T4, T5> pattern, Func<T1, T2, T3, T4, T5, TResult> selector)
  306. {
  307. this.pattern = pattern;
  308. this.selector = selector;
  309. }
  310. internal override IObservable<TResult> AsObservable ()
  311. {
  312. return pattern.AsObservable<TResult> (selector);
  313. }
  314. }
  315. public class Pattern<T1, T2, T3, T4, T5, T6> : Pattern
  316. {
  317. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6)
  318. {
  319. this.t1 = t1;
  320. this.t2 = t2;
  321. this.t3 = t3;
  322. this.t4 = t4;
  323. this.t5 = t5;
  324. this.t6 = t6;
  325. }
  326. IObservable<T1> t1;
  327. IObservable<T2> t2;
  328. IObservable<T3> t3;
  329. IObservable<T4> t4;
  330. IObservable<T5> t5;
  331. IObservable<T6> t6;
  332. public Pattern<T1, T2, T3, T4, T5, T6, T7> And<T7> (IObservable<T7> other)
  333. {
  334. return new Pattern<T1, T2, T3, T4, T5, T6, T7> (t1, t2, t3, t4, t5, t6, other);
  335. }
  336. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  337. {
  338. return new Plan<T1, T2, T3, T4, T5, T6, TResult> (this, selector);
  339. }
  340. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  341. {
  342. var sub = new Subject<TResult> ();
  343. bool [] done = new bool [6];
  344. var q1 = new Queue<T1> ();
  345. var q2 = new Queue<T2> ();
  346. var q3 = new Queue<T3> ();
  347. var q4 = new Queue<T4> ();
  348. var q5 = new Queue<T5> ();
  349. var q6 = new Queue<T6> ();
  350. t1.Subscribe (Observer.Create<T1> (t => {
  351. q1.Enqueue (t);
  352. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  353. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  354. }, (ex) => sub.OnError (ex), () => {
  355. done [0] = true;
  356. if (done.All (b => b))
  357. sub.OnCompleted ();
  358. }));
  359. t2.Subscribe (Observer.Create<T2> (t => {
  360. q2.Enqueue (t);
  361. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  362. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  363. }, (ex) => sub.OnError (ex), () => {
  364. done [1] = true;
  365. if (done.All (b => b))
  366. sub.OnCompleted ();
  367. }));
  368. t3.Subscribe (Observer.Create<T3> (t => {
  369. q3.Enqueue (t);
  370. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  371. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  372. }, (ex) => sub.OnError (ex), () => {
  373. done [2] = true;
  374. if (done.All (b => b))
  375. sub.OnCompleted ();
  376. }));
  377. t4.Subscribe (Observer.Create<T4> (t => {
  378. q4.Enqueue (t);
  379. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  380. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  381. }, (ex) => sub.OnError (ex), () => {
  382. done [3] = true;
  383. if (done.All (b => b))
  384. sub.OnCompleted ();
  385. }));
  386. t5.Subscribe (Observer.Create<T5> (t => {
  387. q5.Enqueue (t);
  388. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  389. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  390. }, (ex) => sub.OnError (ex), () => {
  391. done [4] = true;
  392. if (done.All (b => b))
  393. sub.OnCompleted ();
  394. }));
  395. t6.Subscribe (Observer.Create<T6> (t => {
  396. q6.Enqueue (t);
  397. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0)
  398. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue ()));
  399. }, (ex) => sub.OnError (ex), () => {
  400. done [5] = true;
  401. if (done.All (b => b))
  402. sub.OnCompleted ();
  403. }));
  404. return sub;
  405. }
  406. }
  407. internal class Plan<T1, T2, T3, T4, T5, T6, TResult> : Plan<TResult>
  408. {
  409. Pattern<T1, T2, T3, T4, T5, T6> pattern;
  410. Func<T1, T2, T3, T4, T5, T6, TResult> selector;
  411. public Plan (Pattern<T1, T2, T3, T4, T5, T6> pattern, Func<T1, T2, T3, T4, T5, T6, TResult> selector)
  412. {
  413. this.pattern = pattern;
  414. this.selector = selector;
  415. }
  416. internal override IObservable<TResult> AsObservable ()
  417. {
  418. return pattern.AsObservable<TResult> (selector);
  419. }
  420. }
  421. public class Pattern<T1, T2, T3, T4, T5, T6, T7> : Pattern
  422. {
  423. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7)
  424. {
  425. this.t1 = t1;
  426. this.t2 = t2;
  427. this.t3 = t3;
  428. this.t4 = t4;
  429. this.t5 = t5;
  430. this.t6 = t6;
  431. this.t7 = t7;
  432. }
  433. IObservable<T1> t1;
  434. IObservable<T2> t2;
  435. IObservable<T3> t3;
  436. IObservable<T4> t4;
  437. IObservable<T5> t5;
  438. IObservable<T6> t6;
  439. IObservable<T7> t7;
  440. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8> And<T8> (IObservable<T8> other)
  441. {
  442. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8> (t1, t2, t3, t4, t5, t6, t7, other);
  443. }
  444. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  445. {
  446. return new Plan<T1, T2, T3, T4, T5, T6, T7, TResult> (this, selector);
  447. }
  448. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  449. {
  450. var sub = new Subject<TResult> ();
  451. bool [] done = new bool [7];
  452. var q1 = new Queue<T1> ();
  453. var q2 = new Queue<T2> ();
  454. var q3 = new Queue<T3> ();
  455. var q4 = new Queue<T4> ();
  456. var q5 = new Queue<T5> ();
  457. var q6 = new Queue<T6> ();
  458. var q7 = new Queue<T7> ();
  459. t1.Subscribe (Observer.Create<T1> (t => {
  460. q1.Enqueue (t);
  461. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  462. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  463. }, (ex) => sub.OnError (ex), () => {
  464. done [0] = true;
  465. if (done.All (b => b))
  466. sub.OnCompleted ();
  467. }));
  468. t2.Subscribe (Observer.Create<T2> (t => {
  469. q2.Enqueue (t);
  470. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  471. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  472. }, (ex) => sub.OnError (ex), () => {
  473. done [1] = true;
  474. if (done.All (b => b))
  475. sub.OnCompleted ();
  476. }));
  477. t3.Subscribe (Observer.Create<T3> (t => {
  478. q3.Enqueue (t);
  479. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  480. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  481. }, (ex) => sub.OnError (ex), () => {
  482. done [2] = true;
  483. if (done.All (b => b))
  484. sub.OnCompleted ();
  485. }));
  486. t4.Subscribe (Observer.Create<T4> (t => {
  487. q4.Enqueue (t);
  488. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  489. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  490. }, (ex) => sub.OnError (ex), () => {
  491. done [3] = true;
  492. if (done.All (b => b))
  493. sub.OnCompleted ();
  494. }));
  495. t5.Subscribe (Observer.Create<T5> (t => {
  496. q5.Enqueue (t);
  497. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  498. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  499. }, (ex) => sub.OnError (ex), () => {
  500. done [4] = true;
  501. if (done.All (b => b))
  502. sub.OnCompleted ();
  503. }));
  504. t6.Subscribe (Observer.Create<T6> (t => {
  505. q6.Enqueue (t);
  506. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  507. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  508. }, (ex) => sub.OnError (ex), () => {
  509. done [5] = true;
  510. if (done.All (b => b))
  511. sub.OnCompleted ();
  512. }));
  513. t7.Subscribe (Observer.Create<T7> (t => {
  514. q7.Enqueue (t);
  515. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0)
  516. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue ()));
  517. }, (ex) => sub.OnError (ex), () => {
  518. done [6] = true;
  519. if (done.All (b => b))
  520. sub.OnCompleted ();
  521. }));
  522. return sub;
  523. }
  524. }
  525. internal class Plan<T1, T2, T3, T4, T5, T6, T7, TResult> : Plan<TResult>
  526. {
  527. Pattern<T1, T2, T3, T4, T5, T6, T7> pattern;
  528. Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector;
  529. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7> pattern, Func<T1, T2, T3, T4, T5, T6, T7, TResult> selector)
  530. {
  531. this.pattern = pattern;
  532. this.selector = selector;
  533. }
  534. internal override IObservable<TResult> AsObservable ()
  535. {
  536. return pattern.AsObservable<TResult> (selector);
  537. }
  538. }
  539. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8> : Pattern
  540. {
  541. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8)
  542. {
  543. this.t1 = t1;
  544. this.t2 = t2;
  545. this.t3 = t3;
  546. this.t4 = t4;
  547. this.t5 = t5;
  548. this.t6 = t6;
  549. this.t7 = t7;
  550. this.t8 = t8;
  551. }
  552. IObservable<T1> t1;
  553. IObservable<T2> t2;
  554. IObservable<T3> t3;
  555. IObservable<T4> t4;
  556. IObservable<T5> t5;
  557. IObservable<T6> t6;
  558. IObservable<T7> t7;
  559. IObservable<T8> t8;
  560. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> And<T9> (IObservable<T9> other)
  561. {
  562. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> (t1, t2, t3, t4, t5, t6, t7, t8, other);
  563. }
  564. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  565. {
  566. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> (this, selector);
  567. }
  568. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  569. {
  570. var sub = new Subject<TResult> ();
  571. bool [] done = new bool [8];
  572. var q1 = new Queue<T1> ();
  573. var q2 = new Queue<T2> ();
  574. var q3 = new Queue<T3> ();
  575. var q4 = new Queue<T4> ();
  576. var q5 = new Queue<T5> ();
  577. var q6 = new Queue<T6> ();
  578. var q7 = new Queue<T7> ();
  579. var q8 = new Queue<T8> ();
  580. t1.Subscribe (Observer.Create<T1> (t => {
  581. q1.Enqueue (t);
  582. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  583. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  584. }, (ex) => sub.OnError (ex), () => {
  585. done [0] = true;
  586. if (done.All (b => b))
  587. sub.OnCompleted ();
  588. }));
  589. t2.Subscribe (Observer.Create<T2> (t => {
  590. q2.Enqueue (t);
  591. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  592. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  593. }, (ex) => sub.OnError (ex), () => {
  594. done [1] = true;
  595. if (done.All (b => b))
  596. sub.OnCompleted ();
  597. }));
  598. t3.Subscribe (Observer.Create<T3> (t => {
  599. q3.Enqueue (t);
  600. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  601. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  602. }, (ex) => sub.OnError (ex), () => {
  603. done [2] = true;
  604. if (done.All (b => b))
  605. sub.OnCompleted ();
  606. }));
  607. t4.Subscribe (Observer.Create<T4> (t => {
  608. q4.Enqueue (t);
  609. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  610. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  611. }, (ex) => sub.OnError (ex), () => {
  612. done [3] = true;
  613. if (done.All (b => b))
  614. sub.OnCompleted ();
  615. }));
  616. t5.Subscribe (Observer.Create<T5> (t => {
  617. q5.Enqueue (t);
  618. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  619. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  620. }, (ex) => sub.OnError (ex), () => {
  621. done [4] = true;
  622. if (done.All (b => b))
  623. sub.OnCompleted ();
  624. }));
  625. t6.Subscribe (Observer.Create<T6> (t => {
  626. q6.Enqueue (t);
  627. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  628. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  629. }, (ex) => sub.OnError (ex), () => {
  630. done [5] = true;
  631. if (done.All (b => b))
  632. sub.OnCompleted ();
  633. }));
  634. t7.Subscribe (Observer.Create<T7> (t => {
  635. q7.Enqueue (t);
  636. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  637. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  638. }, (ex) => sub.OnError (ex), () => {
  639. done [6] = true;
  640. if (done.All (b => b))
  641. sub.OnCompleted ();
  642. }));
  643. t8.Subscribe (Observer.Create<T8> (t => {
  644. q8.Enqueue (t);
  645. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0)
  646. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue ()));
  647. }, (ex) => sub.OnError (ex), () => {
  648. done [7] = true;
  649. if (done.All (b => b))
  650. sub.OnCompleted ();
  651. }));
  652. return sub;
  653. }
  654. }
  655. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, TResult> : Plan<TResult>
  656. {
  657. Pattern<T1, T2, T3, T4, T5, T6, T7, T8> pattern;
  658. Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector;
  659. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult> selector)
  660. {
  661. this.pattern = pattern;
  662. this.selector = selector;
  663. }
  664. internal override IObservable<TResult> AsObservable ()
  665. {
  666. return pattern.AsObservable<TResult> (selector);
  667. }
  668. }
  669. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> : Pattern
  670. {
  671. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9)
  672. {
  673. this.t1 = t1;
  674. this.t2 = t2;
  675. this.t3 = t3;
  676. this.t4 = t4;
  677. this.t5 = t5;
  678. this.t6 = t6;
  679. this.t7 = t7;
  680. this.t8 = t8;
  681. this.t9 = t9;
  682. }
  683. IObservable<T1> t1;
  684. IObservable<T2> t2;
  685. IObservable<T3> t3;
  686. IObservable<T4> t4;
  687. IObservable<T5> t5;
  688. IObservable<T6> t6;
  689. IObservable<T7> t7;
  690. IObservable<T8> t8;
  691. IObservable<T9> t9;
  692. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> And<T10> (IObservable<T10> other)
  693. {
  694. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> (t1, t2, t3, t4, t5, t6, t7, t8, t9, other);
  695. }
  696. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  697. {
  698. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> (this, selector);
  699. }
  700. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  701. {
  702. var sub = new Subject<TResult> ();
  703. bool [] done = new bool [9];
  704. var q1 = new Queue<T1> ();
  705. var q2 = new Queue<T2> ();
  706. var q3 = new Queue<T3> ();
  707. var q4 = new Queue<T4> ();
  708. var q5 = new Queue<T5> ();
  709. var q6 = new Queue<T6> ();
  710. var q7 = new Queue<T7> ();
  711. var q8 = new Queue<T8> ();
  712. var q9 = new Queue<T9> ();
  713. t1.Subscribe (Observer.Create<T1> (t => {
  714. q1.Enqueue (t);
  715. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  716. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  717. }, (ex) => sub.OnError (ex), () => {
  718. done [0] = true;
  719. if (done.All (b => b))
  720. sub.OnCompleted ();
  721. }));
  722. t2.Subscribe (Observer.Create<T2> (t => {
  723. q2.Enqueue (t);
  724. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  725. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  726. }, (ex) => sub.OnError (ex), () => {
  727. done [1] = true;
  728. if (done.All (b => b))
  729. sub.OnCompleted ();
  730. }));
  731. t3.Subscribe (Observer.Create<T3> (t => {
  732. q3.Enqueue (t);
  733. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  734. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  735. }, (ex) => sub.OnError (ex), () => {
  736. done [2] = true;
  737. if (done.All (b => b))
  738. sub.OnCompleted ();
  739. }));
  740. t4.Subscribe (Observer.Create<T4> (t => {
  741. q4.Enqueue (t);
  742. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  743. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  744. }, (ex) => sub.OnError (ex), () => {
  745. done [3] = true;
  746. if (done.All (b => b))
  747. sub.OnCompleted ();
  748. }));
  749. t5.Subscribe (Observer.Create<T5> (t => {
  750. q5.Enqueue (t);
  751. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  752. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  753. }, (ex) => sub.OnError (ex), () => {
  754. done [4] = true;
  755. if (done.All (b => b))
  756. sub.OnCompleted ();
  757. }));
  758. t6.Subscribe (Observer.Create<T6> (t => {
  759. q6.Enqueue (t);
  760. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  761. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  762. }, (ex) => sub.OnError (ex), () => {
  763. done [5] = true;
  764. if (done.All (b => b))
  765. sub.OnCompleted ();
  766. }));
  767. t7.Subscribe (Observer.Create<T7> (t => {
  768. q7.Enqueue (t);
  769. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  770. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  771. }, (ex) => sub.OnError (ex), () => {
  772. done [6] = true;
  773. if (done.All (b => b))
  774. sub.OnCompleted ();
  775. }));
  776. t8.Subscribe (Observer.Create<T8> (t => {
  777. q8.Enqueue (t);
  778. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  779. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  780. }, (ex) => sub.OnError (ex), () => {
  781. done [7] = true;
  782. if (done.All (b => b))
  783. sub.OnCompleted ();
  784. }));
  785. t9.Subscribe (Observer.Create<T9> (t => {
  786. q9.Enqueue (t);
  787. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0)
  788. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue ()));
  789. }, (ex) => sub.OnError (ex), () => {
  790. done [8] = true;
  791. if (done.All (b => b))
  792. sub.OnCompleted ();
  793. }));
  794. return sub;
  795. }
  796. }
  797. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> : Plan<TResult>
  798. {
  799. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> pattern;
  800. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector;
  801. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, TResult> selector)
  802. {
  803. this.pattern = pattern;
  804. this.selector = selector;
  805. }
  806. internal override IObservable<TResult> AsObservable ()
  807. {
  808. return pattern.AsObservable<TResult> (selector);
  809. }
  810. }
  811. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : Pattern
  812. {
  813. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10)
  814. {
  815. this.t1 = t1;
  816. this.t2 = t2;
  817. this.t3 = t3;
  818. this.t4 = t4;
  819. this.t5 = t5;
  820. this.t6 = t6;
  821. this.t7 = t7;
  822. this.t8 = t8;
  823. this.t9 = t9;
  824. this.t10 = t10;
  825. }
  826. IObservable<T1> t1;
  827. IObservable<T2> t2;
  828. IObservable<T3> t3;
  829. IObservable<T4> t4;
  830. IObservable<T5> t5;
  831. IObservable<T6> t6;
  832. IObservable<T7> t7;
  833. IObservable<T8> t8;
  834. IObservable<T9> t9;
  835. IObservable<T10> t10;
  836. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> And<T11> (IObservable<T11> other)
  837. {
  838. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, other);
  839. }
  840. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  841. {
  842. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> (this, selector);
  843. }
  844. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  845. {
  846. var sub = new Subject<TResult> ();
  847. bool [] done = new bool [10];
  848. var q1 = new Queue<T1> ();
  849. var q2 = new Queue<T2> ();
  850. var q3 = new Queue<T3> ();
  851. var q4 = new Queue<T4> ();
  852. var q5 = new Queue<T5> ();
  853. var q6 = new Queue<T6> ();
  854. var q7 = new Queue<T7> ();
  855. var q8 = new Queue<T8> ();
  856. var q9 = new Queue<T9> ();
  857. var q10 = new Queue<T10> ();
  858. t1.Subscribe (Observer.Create<T1> (t => {
  859. q1.Enqueue (t);
  860. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  861. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  862. }, (ex) => sub.OnError (ex), () => {
  863. done [0] = true;
  864. if (done.All (b => b))
  865. sub.OnCompleted ();
  866. }));
  867. t2.Subscribe (Observer.Create<T2> (t => {
  868. q2.Enqueue (t);
  869. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  870. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  871. }, (ex) => sub.OnError (ex), () => {
  872. done [1] = true;
  873. if (done.All (b => b))
  874. sub.OnCompleted ();
  875. }));
  876. t3.Subscribe (Observer.Create<T3> (t => {
  877. q3.Enqueue (t);
  878. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  879. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  880. }, (ex) => sub.OnError (ex), () => {
  881. done [2] = true;
  882. if (done.All (b => b))
  883. sub.OnCompleted ();
  884. }));
  885. t4.Subscribe (Observer.Create<T4> (t => {
  886. q4.Enqueue (t);
  887. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  888. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  889. }, (ex) => sub.OnError (ex), () => {
  890. done [3] = true;
  891. if (done.All (b => b))
  892. sub.OnCompleted ();
  893. }));
  894. t5.Subscribe (Observer.Create<T5> (t => {
  895. q5.Enqueue (t);
  896. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  897. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  898. }, (ex) => sub.OnError (ex), () => {
  899. done [4] = true;
  900. if (done.All (b => b))
  901. sub.OnCompleted ();
  902. }));
  903. t6.Subscribe (Observer.Create<T6> (t => {
  904. q6.Enqueue (t);
  905. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  906. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  907. }, (ex) => sub.OnError (ex), () => {
  908. done [5] = true;
  909. if (done.All (b => b))
  910. sub.OnCompleted ();
  911. }));
  912. t7.Subscribe (Observer.Create<T7> (t => {
  913. q7.Enqueue (t);
  914. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  915. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  916. }, (ex) => sub.OnError (ex), () => {
  917. done [6] = true;
  918. if (done.All (b => b))
  919. sub.OnCompleted ();
  920. }));
  921. t8.Subscribe (Observer.Create<T8> (t => {
  922. q8.Enqueue (t);
  923. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  924. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  925. }, (ex) => sub.OnError (ex), () => {
  926. done [7] = true;
  927. if (done.All (b => b))
  928. sub.OnCompleted ();
  929. }));
  930. t9.Subscribe (Observer.Create<T9> (t => {
  931. q9.Enqueue (t);
  932. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  933. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  934. }, (ex) => sub.OnError (ex), () => {
  935. done [8] = true;
  936. if (done.All (b => b))
  937. sub.OnCompleted ();
  938. }));
  939. t10.Subscribe (Observer.Create<T10> (t => {
  940. q10.Enqueue (t);
  941. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0)
  942. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue ()));
  943. }, (ex) => sub.OnError (ex), () => {
  944. done [9] = true;
  945. if (done.All (b => b))
  946. sub.OnCompleted ();
  947. }));
  948. return sub;
  949. }
  950. }
  951. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> : Plan<TResult>
  952. {
  953. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> pattern;
  954. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector;
  955. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, TResult> selector)
  956. {
  957. this.pattern = pattern;
  958. this.selector = selector;
  959. }
  960. internal override IObservable<TResult> AsObservable ()
  961. {
  962. return pattern.AsObservable<TResult> (selector);
  963. }
  964. }
  965. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : Pattern
  966. {
  967. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11)
  968. {
  969. this.t1 = t1;
  970. this.t2 = t2;
  971. this.t3 = t3;
  972. this.t4 = t4;
  973. this.t5 = t5;
  974. this.t6 = t6;
  975. this.t7 = t7;
  976. this.t8 = t8;
  977. this.t9 = t9;
  978. this.t10 = t10;
  979. this.t11 = t11;
  980. }
  981. IObservable<T1> t1;
  982. IObservable<T2> t2;
  983. IObservable<T3> t3;
  984. IObservable<T4> t4;
  985. IObservable<T5> t5;
  986. IObservable<T6> t6;
  987. IObservable<T7> t7;
  988. IObservable<T8> t8;
  989. IObservable<T9> t9;
  990. IObservable<T10> t10;
  991. IObservable<T11> t11;
  992. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> And<T12> (IObservable<T12> other)
  993. {
  994. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, other);
  995. }
  996. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  997. {
  998. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> (this, selector);
  999. }
  1000. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  1001. {
  1002. var sub = new Subject<TResult> ();
  1003. bool [] done = new bool [11];
  1004. var q1 = new Queue<T1> ();
  1005. var q2 = new Queue<T2> ();
  1006. var q3 = new Queue<T3> ();
  1007. var q4 = new Queue<T4> ();
  1008. var q5 = new Queue<T5> ();
  1009. var q6 = new Queue<T6> ();
  1010. var q7 = new Queue<T7> ();
  1011. var q8 = new Queue<T8> ();
  1012. var q9 = new Queue<T9> ();
  1013. var q10 = new Queue<T10> ();
  1014. var q11 = new Queue<T11> ();
  1015. t1.Subscribe (Observer.Create<T1> (t => {
  1016. q1.Enqueue (t);
  1017. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1018. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1019. }, (ex) => sub.OnError (ex), () => {
  1020. done [0] = true;
  1021. if (done.All (b => b))
  1022. sub.OnCompleted ();
  1023. }));
  1024. t2.Subscribe (Observer.Create<T2> (t => {
  1025. q2.Enqueue (t);
  1026. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1027. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1028. }, (ex) => sub.OnError (ex), () => {
  1029. done [1] = true;
  1030. if (done.All (b => b))
  1031. sub.OnCompleted ();
  1032. }));
  1033. t3.Subscribe (Observer.Create<T3> (t => {
  1034. q3.Enqueue (t);
  1035. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1036. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1037. }, (ex) => sub.OnError (ex), () => {
  1038. done [2] = true;
  1039. if (done.All (b => b))
  1040. sub.OnCompleted ();
  1041. }));
  1042. t4.Subscribe (Observer.Create<T4> (t => {
  1043. q4.Enqueue (t);
  1044. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1045. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1046. }, (ex) => sub.OnError (ex), () => {
  1047. done [3] = true;
  1048. if (done.All (b => b))
  1049. sub.OnCompleted ();
  1050. }));
  1051. t5.Subscribe (Observer.Create<T5> (t => {
  1052. q5.Enqueue (t);
  1053. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1054. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1055. }, (ex) => sub.OnError (ex), () => {
  1056. done [4] = true;
  1057. if (done.All (b => b))
  1058. sub.OnCompleted ();
  1059. }));
  1060. t6.Subscribe (Observer.Create<T6> (t => {
  1061. q6.Enqueue (t);
  1062. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1063. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1064. }, (ex) => sub.OnError (ex), () => {
  1065. done [5] = true;
  1066. if (done.All (b => b))
  1067. sub.OnCompleted ();
  1068. }));
  1069. t7.Subscribe (Observer.Create<T7> (t => {
  1070. q7.Enqueue (t);
  1071. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1072. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1073. }, (ex) => sub.OnError (ex), () => {
  1074. done [6] = true;
  1075. if (done.All (b => b))
  1076. sub.OnCompleted ();
  1077. }));
  1078. t8.Subscribe (Observer.Create<T8> (t => {
  1079. q8.Enqueue (t);
  1080. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1081. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1082. }, (ex) => sub.OnError (ex), () => {
  1083. done [7] = true;
  1084. if (done.All (b => b))
  1085. sub.OnCompleted ();
  1086. }));
  1087. t9.Subscribe (Observer.Create<T9> (t => {
  1088. q9.Enqueue (t);
  1089. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1090. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1091. }, (ex) => sub.OnError (ex), () => {
  1092. done [8] = true;
  1093. if (done.All (b => b))
  1094. sub.OnCompleted ();
  1095. }));
  1096. t10.Subscribe (Observer.Create<T10> (t => {
  1097. q10.Enqueue (t);
  1098. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1099. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1100. }, (ex) => sub.OnError (ex), () => {
  1101. done [9] = true;
  1102. if (done.All (b => b))
  1103. sub.OnCompleted ();
  1104. }));
  1105. t11.Subscribe (Observer.Create<T11> (t => {
  1106. q11.Enqueue (t);
  1107. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0)
  1108. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue ()));
  1109. }, (ex) => sub.OnError (ex), () => {
  1110. done [10] = true;
  1111. if (done.All (b => b))
  1112. sub.OnCompleted ();
  1113. }));
  1114. return sub;
  1115. }
  1116. }
  1117. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> : Plan<TResult>
  1118. {
  1119. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> pattern;
  1120. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector;
  1121. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, TResult> selector)
  1122. {
  1123. this.pattern = pattern;
  1124. this.selector = selector;
  1125. }
  1126. internal override IObservable<TResult> AsObservable ()
  1127. {
  1128. return pattern.AsObservable<TResult> (selector);
  1129. }
  1130. }
  1131. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : Pattern
  1132. {
  1133. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12)
  1134. {
  1135. this.t1 = t1;
  1136. this.t2 = t2;
  1137. this.t3 = t3;
  1138. this.t4 = t4;
  1139. this.t5 = t5;
  1140. this.t6 = t6;
  1141. this.t7 = t7;
  1142. this.t8 = t8;
  1143. this.t9 = t9;
  1144. this.t10 = t10;
  1145. this.t11 = t11;
  1146. this.t12 = t12;
  1147. }
  1148. IObservable<T1> t1;
  1149. IObservable<T2> t2;
  1150. IObservable<T3> t3;
  1151. IObservable<T4> t4;
  1152. IObservable<T5> t5;
  1153. IObservable<T6> t6;
  1154. IObservable<T7> t7;
  1155. IObservable<T8> t8;
  1156. IObservable<T9> t9;
  1157. IObservable<T10> t10;
  1158. IObservable<T11> t11;
  1159. IObservable<T12> t12;
  1160. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> And<T13> (IObservable<T13> other)
  1161. {
  1162. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, other);
  1163. }
  1164. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
  1165. {
  1166. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> (this, selector);
  1167. }
  1168. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
  1169. {
  1170. var sub = new Subject<TResult> ();
  1171. bool [] done = new bool [12];
  1172. var q1 = new Queue<T1> ();
  1173. var q2 = new Queue<T2> ();
  1174. var q3 = new Queue<T3> ();
  1175. var q4 = new Queue<T4> ();
  1176. var q5 = new Queue<T5> ();
  1177. var q6 = new Queue<T6> ();
  1178. var q7 = new Queue<T7> ();
  1179. var q8 = new Queue<T8> ();
  1180. var q9 = new Queue<T9> ();
  1181. var q10 = new Queue<T10> ();
  1182. var q11 = new Queue<T11> ();
  1183. var q12 = new Queue<T12> ();
  1184. t1.Subscribe (Observer.Create<T1> (t => {
  1185. q1.Enqueue (t);
  1186. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1187. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1188. }, (ex) => sub.OnError (ex), () => {
  1189. done [0] = true;
  1190. if (done.All (b => b))
  1191. sub.OnCompleted ();
  1192. }));
  1193. t2.Subscribe (Observer.Create<T2> (t => {
  1194. q2.Enqueue (t);
  1195. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1196. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1197. }, (ex) => sub.OnError (ex), () => {
  1198. done [1] = true;
  1199. if (done.All (b => b))
  1200. sub.OnCompleted ();
  1201. }));
  1202. t3.Subscribe (Observer.Create<T3> (t => {
  1203. q3.Enqueue (t);
  1204. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1205. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1206. }, (ex) => sub.OnError (ex), () => {
  1207. done [2] = true;
  1208. if (done.All (b => b))
  1209. sub.OnCompleted ();
  1210. }));
  1211. t4.Subscribe (Observer.Create<T4> (t => {
  1212. q4.Enqueue (t);
  1213. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1214. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1215. }, (ex) => sub.OnError (ex), () => {
  1216. done [3] = true;
  1217. if (done.All (b => b))
  1218. sub.OnCompleted ();
  1219. }));
  1220. t5.Subscribe (Observer.Create<T5> (t => {
  1221. q5.Enqueue (t);
  1222. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1223. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1224. }, (ex) => sub.OnError (ex), () => {
  1225. done [4] = true;
  1226. if (done.All (b => b))
  1227. sub.OnCompleted ();
  1228. }));
  1229. t6.Subscribe (Observer.Create<T6> (t => {
  1230. q6.Enqueue (t);
  1231. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1232. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1233. }, (ex) => sub.OnError (ex), () => {
  1234. done [5] = true;
  1235. if (done.All (b => b))
  1236. sub.OnCompleted ();
  1237. }));
  1238. t7.Subscribe (Observer.Create<T7> (t => {
  1239. q7.Enqueue (t);
  1240. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1241. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1242. }, (ex) => sub.OnError (ex), () => {
  1243. done [6] = true;
  1244. if (done.All (b => b))
  1245. sub.OnCompleted ();
  1246. }));
  1247. t8.Subscribe (Observer.Create<T8> (t => {
  1248. q8.Enqueue (t);
  1249. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1250. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1251. }, (ex) => sub.OnError (ex), () => {
  1252. done [7] = true;
  1253. if (done.All (b => b))
  1254. sub.OnCompleted ();
  1255. }));
  1256. t9.Subscribe (Observer.Create<T9> (t => {
  1257. q9.Enqueue (t);
  1258. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1259. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1260. }, (ex) => sub.OnError (ex), () => {
  1261. done [8] = true;
  1262. if (done.All (b => b))
  1263. sub.OnCompleted ();
  1264. }));
  1265. t10.Subscribe (Observer.Create<T10> (t => {
  1266. q10.Enqueue (t);
  1267. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1268. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1269. }, (ex) => sub.OnError (ex), () => {
  1270. done [9] = true;
  1271. if (done.All (b => b))
  1272. sub.OnCompleted ();
  1273. }));
  1274. t11.Subscribe (Observer.Create<T11> (t => {
  1275. q11.Enqueue (t);
  1276. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1277. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1278. }, (ex) => sub.OnError (ex), () => {
  1279. done [10] = true;
  1280. if (done.All (b => b))
  1281. sub.OnCompleted ();
  1282. }));
  1283. t12.Subscribe (Observer.Create<T12> (t => {
  1284. q12.Enqueue (t);
  1285. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0)
  1286. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue ()));
  1287. }, (ex) => sub.OnError (ex), () => {
  1288. done [11] = true;
  1289. if (done.All (b => b))
  1290. sub.OnCompleted ();
  1291. }));
  1292. return sub;
  1293. }
  1294. }
  1295. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> : Plan<TResult>
  1296. {
  1297. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> pattern;
  1298. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector;
  1299. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, TResult> selector)
  1300. {
  1301. this.pattern = pattern;
  1302. this.selector = selector;
  1303. }
  1304. internal override IObservable<TResult> AsObservable ()
  1305. {
  1306. return pattern.AsObservable<TResult> (selector);
  1307. }
  1308. }
  1309. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> : Pattern
  1310. {
  1311. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12, IObservable<T13> t13)
  1312. {
  1313. this.t1 = t1;
  1314. this.t2 = t2;
  1315. this.t3 = t3;
  1316. this.t4 = t4;
  1317. this.t5 = t5;
  1318. this.t6 = t6;
  1319. this.t7 = t7;
  1320. this.t8 = t8;
  1321. this.t9 = t9;
  1322. this.t10 = t10;
  1323. this.t11 = t11;
  1324. this.t12 = t12;
  1325. this.t13 = t13;
  1326. }
  1327. IObservable<T1> t1;
  1328. IObservable<T2> t2;
  1329. IObservable<T3> t3;
  1330. IObservable<T4> t4;
  1331. IObservable<T5> t5;
  1332. IObservable<T6> t6;
  1333. IObservable<T7> t7;
  1334. IObservable<T8> t8;
  1335. IObservable<T9> t9;
  1336. IObservable<T10> t10;
  1337. IObservable<T11> t11;
  1338. IObservable<T12> t12;
  1339. IObservable<T13> t13;
  1340. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> And<T14> (IObservable<T14> other)
  1341. {
  1342. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, other);
  1343. }
  1344. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector)
  1345. {
  1346. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> (this, selector);
  1347. }
  1348. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector)
  1349. {
  1350. var sub = new Subject<TResult> ();
  1351. bool [] done = new bool [13];
  1352. var q1 = new Queue<T1> ();
  1353. var q2 = new Queue<T2> ();
  1354. var q3 = new Queue<T3> ();
  1355. var q4 = new Queue<T4> ();
  1356. var q5 = new Queue<T5> ();
  1357. var q6 = new Queue<T6> ();
  1358. var q7 = new Queue<T7> ();
  1359. var q8 = new Queue<T8> ();
  1360. var q9 = new Queue<T9> ();
  1361. var q10 = new Queue<T10> ();
  1362. var q11 = new Queue<T11> ();
  1363. var q12 = new Queue<T12> ();
  1364. var q13 = new Queue<T13> ();
  1365. t1.Subscribe (Observer.Create<T1> (t => {
  1366. q1.Enqueue (t);
  1367. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1368. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1369. }, (ex) => sub.OnError (ex), () => {
  1370. done [0] = true;
  1371. if (done.All (b => b))
  1372. sub.OnCompleted ();
  1373. }));
  1374. t2.Subscribe (Observer.Create<T2> (t => {
  1375. q2.Enqueue (t);
  1376. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1377. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1378. }, (ex) => sub.OnError (ex), () => {
  1379. done [1] = true;
  1380. if (done.All (b => b))
  1381. sub.OnCompleted ();
  1382. }));
  1383. t3.Subscribe (Observer.Create<T3> (t => {
  1384. q3.Enqueue (t);
  1385. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1386. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1387. }, (ex) => sub.OnError (ex), () => {
  1388. done [2] = true;
  1389. if (done.All (b => b))
  1390. sub.OnCompleted ();
  1391. }));
  1392. t4.Subscribe (Observer.Create<T4> (t => {
  1393. q4.Enqueue (t);
  1394. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1395. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1396. }, (ex) => sub.OnError (ex), () => {
  1397. done [3] = true;
  1398. if (done.All (b => b))
  1399. sub.OnCompleted ();
  1400. }));
  1401. t5.Subscribe (Observer.Create<T5> (t => {
  1402. q5.Enqueue (t);
  1403. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1404. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1405. }, (ex) => sub.OnError (ex), () => {
  1406. done [4] = true;
  1407. if (done.All (b => b))
  1408. sub.OnCompleted ();
  1409. }));
  1410. t6.Subscribe (Observer.Create<T6> (t => {
  1411. q6.Enqueue (t);
  1412. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1413. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1414. }, (ex) => sub.OnError (ex), () => {
  1415. done [5] = true;
  1416. if (done.All (b => b))
  1417. sub.OnCompleted ();
  1418. }));
  1419. t7.Subscribe (Observer.Create<T7> (t => {
  1420. q7.Enqueue (t);
  1421. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1422. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1423. }, (ex) => sub.OnError (ex), () => {
  1424. done [6] = true;
  1425. if (done.All (b => b))
  1426. sub.OnCompleted ();
  1427. }));
  1428. t8.Subscribe (Observer.Create<T8> (t => {
  1429. q8.Enqueue (t);
  1430. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1431. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1432. }, (ex) => sub.OnError (ex), () => {
  1433. done [7] = true;
  1434. if (done.All (b => b))
  1435. sub.OnCompleted ();
  1436. }));
  1437. t9.Subscribe (Observer.Create<T9> (t => {
  1438. q9.Enqueue (t);
  1439. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1440. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1441. }, (ex) => sub.OnError (ex), () => {
  1442. done [8] = true;
  1443. if (done.All (b => b))
  1444. sub.OnCompleted ();
  1445. }));
  1446. t10.Subscribe (Observer.Create<T10> (t => {
  1447. q10.Enqueue (t);
  1448. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1449. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1450. }, (ex) => sub.OnError (ex), () => {
  1451. done [9] = true;
  1452. if (done.All (b => b))
  1453. sub.OnCompleted ();
  1454. }));
  1455. t11.Subscribe (Observer.Create<T11> (t => {
  1456. q11.Enqueue (t);
  1457. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1458. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1459. }, (ex) => sub.OnError (ex), () => {
  1460. done [10] = true;
  1461. if (done.All (b => b))
  1462. sub.OnCompleted ();
  1463. }));
  1464. t12.Subscribe (Observer.Create<T12> (t => {
  1465. q12.Enqueue (t);
  1466. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1467. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1468. }, (ex) => sub.OnError (ex), () => {
  1469. done [11] = true;
  1470. if (done.All (b => b))
  1471. sub.OnCompleted ();
  1472. }));
  1473. t13.Subscribe (Observer.Create<T13> (t => {
  1474. q13.Enqueue (t);
  1475. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0)
  1476. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue ()));
  1477. }, (ex) => sub.OnError (ex), () => {
  1478. done [12] = true;
  1479. if (done.All (b => b))
  1480. sub.OnCompleted ();
  1481. }));
  1482. return sub;
  1483. }
  1484. }
  1485. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> : Plan<TResult>
  1486. {
  1487. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> pattern;
  1488. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector;
  1489. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, TResult> selector)
  1490. {
  1491. this.pattern = pattern;
  1492. this.selector = selector;
  1493. }
  1494. internal override IObservable<TResult> AsObservable ()
  1495. {
  1496. return pattern.AsObservable<TResult> (selector);
  1497. }
  1498. }
  1499. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> : Pattern
  1500. {
  1501. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12, IObservable<T13> t13, IObservable<T14> t14)
  1502. {
  1503. this.t1 = t1;
  1504. this.t2 = t2;
  1505. this.t3 = t3;
  1506. this.t4 = t4;
  1507. this.t5 = t5;
  1508. this.t6 = t6;
  1509. this.t7 = t7;
  1510. this.t8 = t8;
  1511. this.t9 = t9;
  1512. this.t10 = t10;
  1513. this.t11 = t11;
  1514. this.t12 = t12;
  1515. this.t13 = t13;
  1516. this.t14 = t14;
  1517. }
  1518. IObservable<T1> t1;
  1519. IObservable<T2> t2;
  1520. IObservable<T3> t3;
  1521. IObservable<T4> t4;
  1522. IObservable<T5> t5;
  1523. IObservable<T6> t6;
  1524. IObservable<T7> t7;
  1525. IObservable<T8> t8;
  1526. IObservable<T9> t9;
  1527. IObservable<T10> t10;
  1528. IObservable<T11> t11;
  1529. IObservable<T12> t12;
  1530. IObservable<T13> t13;
  1531. IObservable<T14> t14;
  1532. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> And<T15> (IObservable<T15> other)
  1533. {
  1534. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, other);
  1535. }
  1536. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector)
  1537. {
  1538. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> (this, selector);
  1539. }
  1540. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector)
  1541. {
  1542. var sub = new Subject<TResult> ();
  1543. bool [] done = new bool [14];
  1544. var q1 = new Queue<T1> ();
  1545. var q2 = new Queue<T2> ();
  1546. var q3 = new Queue<T3> ();
  1547. var q4 = new Queue<T4> ();
  1548. var q5 = new Queue<T5> ();
  1549. var q6 = new Queue<T6> ();
  1550. var q7 = new Queue<T7> ();
  1551. var q8 = new Queue<T8> ();
  1552. var q9 = new Queue<T9> ();
  1553. var q10 = new Queue<T10> ();
  1554. var q11 = new Queue<T11> ();
  1555. var q12 = new Queue<T12> ();
  1556. var q13 = new Queue<T13> ();
  1557. var q14 = new Queue<T14> ();
  1558. t1.Subscribe (Observer.Create<T1> (t => {
  1559. q1.Enqueue (t);
  1560. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1561. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1562. }, (ex) => sub.OnError (ex), () => {
  1563. done [0] = true;
  1564. if (done.All (b => b))
  1565. sub.OnCompleted ();
  1566. }));
  1567. t2.Subscribe (Observer.Create<T2> (t => {
  1568. q2.Enqueue (t);
  1569. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1570. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1571. }, (ex) => sub.OnError (ex), () => {
  1572. done [1] = true;
  1573. if (done.All (b => b))
  1574. sub.OnCompleted ();
  1575. }));
  1576. t3.Subscribe (Observer.Create<T3> (t => {
  1577. q3.Enqueue (t);
  1578. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1579. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1580. }, (ex) => sub.OnError (ex), () => {
  1581. done [2] = true;
  1582. if (done.All (b => b))
  1583. sub.OnCompleted ();
  1584. }));
  1585. t4.Subscribe (Observer.Create<T4> (t => {
  1586. q4.Enqueue (t);
  1587. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1588. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1589. }, (ex) => sub.OnError (ex), () => {
  1590. done [3] = true;
  1591. if (done.All (b => b))
  1592. sub.OnCompleted ();
  1593. }));
  1594. t5.Subscribe (Observer.Create<T5> (t => {
  1595. q5.Enqueue (t);
  1596. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1597. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1598. }, (ex) => sub.OnError (ex), () => {
  1599. done [4] = true;
  1600. if (done.All (b => b))
  1601. sub.OnCompleted ();
  1602. }));
  1603. t6.Subscribe (Observer.Create<T6> (t => {
  1604. q6.Enqueue (t);
  1605. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1606. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1607. }, (ex) => sub.OnError (ex), () => {
  1608. done [5] = true;
  1609. if (done.All (b => b))
  1610. sub.OnCompleted ();
  1611. }));
  1612. t7.Subscribe (Observer.Create<T7> (t => {
  1613. q7.Enqueue (t);
  1614. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1615. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1616. }, (ex) => sub.OnError (ex), () => {
  1617. done [6] = true;
  1618. if (done.All (b => b))
  1619. sub.OnCompleted ();
  1620. }));
  1621. t8.Subscribe (Observer.Create<T8> (t => {
  1622. q8.Enqueue (t);
  1623. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1624. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1625. }, (ex) => sub.OnError (ex), () => {
  1626. done [7] = true;
  1627. if (done.All (b => b))
  1628. sub.OnCompleted ();
  1629. }));
  1630. t9.Subscribe (Observer.Create<T9> (t => {
  1631. q9.Enqueue (t);
  1632. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1633. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1634. }, (ex) => sub.OnError (ex), () => {
  1635. done [8] = true;
  1636. if (done.All (b => b))
  1637. sub.OnCompleted ();
  1638. }));
  1639. t10.Subscribe (Observer.Create<T10> (t => {
  1640. q10.Enqueue (t);
  1641. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1642. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1643. }, (ex) => sub.OnError (ex), () => {
  1644. done [9] = true;
  1645. if (done.All (b => b))
  1646. sub.OnCompleted ();
  1647. }));
  1648. t11.Subscribe (Observer.Create<T11> (t => {
  1649. q11.Enqueue (t);
  1650. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1651. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1652. }, (ex) => sub.OnError (ex), () => {
  1653. done [10] = true;
  1654. if (done.All (b => b))
  1655. sub.OnCompleted ();
  1656. }));
  1657. t12.Subscribe (Observer.Create<T12> (t => {
  1658. q12.Enqueue (t);
  1659. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1660. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1661. }, (ex) => sub.OnError (ex), () => {
  1662. done [11] = true;
  1663. if (done.All (b => b))
  1664. sub.OnCompleted ();
  1665. }));
  1666. t13.Subscribe (Observer.Create<T13> (t => {
  1667. q13.Enqueue (t);
  1668. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1669. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1670. }, (ex) => sub.OnError (ex), () => {
  1671. done [12] = true;
  1672. if (done.All (b => b))
  1673. sub.OnCompleted ();
  1674. }));
  1675. t14.Subscribe (Observer.Create<T14> (t => {
  1676. q14.Enqueue (t);
  1677. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0)
  1678. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue ()));
  1679. }, (ex) => sub.OnError (ex), () => {
  1680. done [13] = true;
  1681. if (done.All (b => b))
  1682. sub.OnCompleted ();
  1683. }));
  1684. return sub;
  1685. }
  1686. }
  1687. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> : Plan<TResult>
  1688. {
  1689. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> pattern;
  1690. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector;
  1691. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, TResult> selector)
  1692. {
  1693. this.pattern = pattern;
  1694. this.selector = selector;
  1695. }
  1696. internal override IObservable<TResult> AsObservable ()
  1697. {
  1698. return pattern.AsObservable<TResult> (selector);
  1699. }
  1700. }
  1701. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> : Pattern
  1702. {
  1703. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12, IObservable<T13> t13, IObservable<T14> t14, IObservable<T15> t15)
  1704. {
  1705. this.t1 = t1;
  1706. this.t2 = t2;
  1707. this.t3 = t3;
  1708. this.t4 = t4;
  1709. this.t5 = t5;
  1710. this.t6 = t6;
  1711. this.t7 = t7;
  1712. this.t8 = t8;
  1713. this.t9 = t9;
  1714. this.t10 = t10;
  1715. this.t11 = t11;
  1716. this.t12 = t12;
  1717. this.t13 = t13;
  1718. this.t14 = t14;
  1719. this.t15 = t15;
  1720. }
  1721. IObservable<T1> t1;
  1722. IObservable<T2> t2;
  1723. IObservable<T3> t3;
  1724. IObservable<T4> t4;
  1725. IObservable<T5> t5;
  1726. IObservable<T6> t6;
  1727. IObservable<T7> t7;
  1728. IObservable<T8> t8;
  1729. IObservable<T9> t9;
  1730. IObservable<T10> t10;
  1731. IObservable<T11> t11;
  1732. IObservable<T12> t12;
  1733. IObservable<T13> t13;
  1734. IObservable<T14> t14;
  1735. IObservable<T15> t15;
  1736. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> And<T16> (IObservable<T16> other)
  1737. {
  1738. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, other);
  1739. }
  1740. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector)
  1741. {
  1742. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> (this, selector);
  1743. }
  1744. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector)
  1745. {
  1746. var sub = new Subject<TResult> ();
  1747. bool [] done = new bool [15];
  1748. var q1 = new Queue<T1> ();
  1749. var q2 = new Queue<T2> ();
  1750. var q3 = new Queue<T3> ();
  1751. var q4 = new Queue<T4> ();
  1752. var q5 = new Queue<T5> ();
  1753. var q6 = new Queue<T6> ();
  1754. var q7 = new Queue<T7> ();
  1755. var q8 = new Queue<T8> ();
  1756. var q9 = new Queue<T9> ();
  1757. var q10 = new Queue<T10> ();
  1758. var q11 = new Queue<T11> ();
  1759. var q12 = new Queue<T12> ();
  1760. var q13 = new Queue<T13> ();
  1761. var q14 = new Queue<T14> ();
  1762. var q15 = new Queue<T15> ();
  1763. t1.Subscribe (Observer.Create<T1> (t => {
  1764. q1.Enqueue (t);
  1765. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1766. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1767. }, (ex) => sub.OnError (ex), () => {
  1768. done [0] = true;
  1769. if (done.All (b => b))
  1770. sub.OnCompleted ();
  1771. }));
  1772. t2.Subscribe (Observer.Create<T2> (t => {
  1773. q2.Enqueue (t);
  1774. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1775. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1776. }, (ex) => sub.OnError (ex), () => {
  1777. done [1] = true;
  1778. if (done.All (b => b))
  1779. sub.OnCompleted ();
  1780. }));
  1781. t3.Subscribe (Observer.Create<T3> (t => {
  1782. q3.Enqueue (t);
  1783. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1784. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1785. }, (ex) => sub.OnError (ex), () => {
  1786. done [2] = true;
  1787. if (done.All (b => b))
  1788. sub.OnCompleted ();
  1789. }));
  1790. t4.Subscribe (Observer.Create<T4> (t => {
  1791. q4.Enqueue (t);
  1792. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1793. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1794. }, (ex) => sub.OnError (ex), () => {
  1795. done [3] = true;
  1796. if (done.All (b => b))
  1797. sub.OnCompleted ();
  1798. }));
  1799. t5.Subscribe (Observer.Create<T5> (t => {
  1800. q5.Enqueue (t);
  1801. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1802. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1803. }, (ex) => sub.OnError (ex), () => {
  1804. done [4] = true;
  1805. if (done.All (b => b))
  1806. sub.OnCompleted ();
  1807. }));
  1808. t6.Subscribe (Observer.Create<T6> (t => {
  1809. q6.Enqueue (t);
  1810. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1811. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1812. }, (ex) => sub.OnError (ex), () => {
  1813. done [5] = true;
  1814. if (done.All (b => b))
  1815. sub.OnCompleted ();
  1816. }));
  1817. t7.Subscribe (Observer.Create<T7> (t => {
  1818. q7.Enqueue (t);
  1819. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1820. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1821. }, (ex) => sub.OnError (ex), () => {
  1822. done [6] = true;
  1823. if (done.All (b => b))
  1824. sub.OnCompleted ();
  1825. }));
  1826. t8.Subscribe (Observer.Create<T8> (t => {
  1827. q8.Enqueue (t);
  1828. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1829. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1830. }, (ex) => sub.OnError (ex), () => {
  1831. done [7] = true;
  1832. if (done.All (b => b))
  1833. sub.OnCompleted ();
  1834. }));
  1835. t9.Subscribe (Observer.Create<T9> (t => {
  1836. q9.Enqueue (t);
  1837. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1838. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1839. }, (ex) => sub.OnError (ex), () => {
  1840. done [8] = true;
  1841. if (done.All (b => b))
  1842. sub.OnCompleted ();
  1843. }));
  1844. t10.Subscribe (Observer.Create<T10> (t => {
  1845. q10.Enqueue (t);
  1846. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1847. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1848. }, (ex) => sub.OnError (ex), () => {
  1849. done [9] = true;
  1850. if (done.All (b => b))
  1851. sub.OnCompleted ();
  1852. }));
  1853. t11.Subscribe (Observer.Create<T11> (t => {
  1854. q11.Enqueue (t);
  1855. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1856. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1857. }, (ex) => sub.OnError (ex), () => {
  1858. done [10] = true;
  1859. if (done.All (b => b))
  1860. sub.OnCompleted ();
  1861. }));
  1862. t12.Subscribe (Observer.Create<T12> (t => {
  1863. q12.Enqueue (t);
  1864. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1865. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1866. }, (ex) => sub.OnError (ex), () => {
  1867. done [11] = true;
  1868. if (done.All (b => b))
  1869. sub.OnCompleted ();
  1870. }));
  1871. t13.Subscribe (Observer.Create<T13> (t => {
  1872. q13.Enqueue (t);
  1873. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1874. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1875. }, (ex) => sub.OnError (ex), () => {
  1876. done [12] = true;
  1877. if (done.All (b => b))
  1878. sub.OnCompleted ();
  1879. }));
  1880. t14.Subscribe (Observer.Create<T14> (t => {
  1881. q14.Enqueue (t);
  1882. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1883. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1884. }, (ex) => sub.OnError (ex), () => {
  1885. done [13] = true;
  1886. if (done.All (b => b))
  1887. sub.OnCompleted ();
  1888. }));
  1889. t15.Subscribe (Observer.Create<T15> (t => {
  1890. q15.Enqueue (t);
  1891. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0)
  1892. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue ()));
  1893. }, (ex) => sub.OnError (ex), () => {
  1894. done [14] = true;
  1895. if (done.All (b => b))
  1896. sub.OnCompleted ();
  1897. }));
  1898. return sub;
  1899. }
  1900. }
  1901. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> : Plan<TResult>
  1902. {
  1903. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> pattern;
  1904. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector;
  1905. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, TResult> selector)
  1906. {
  1907. this.pattern = pattern;
  1908. this.selector = selector;
  1909. }
  1910. internal override IObservable<TResult> AsObservable ()
  1911. {
  1912. return pattern.AsObservable<TResult> (selector);
  1913. }
  1914. }
  1915. public class Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> : Pattern
  1916. {
  1917. internal Pattern (IObservable<T1> t1, IObservable<T2> t2, IObservable<T3> t3, IObservable<T4> t4, IObservable<T5> t5, IObservable<T6> t6, IObservable<T7> t7, IObservable<T8> t8, IObservable<T9> t9, IObservable<T10> t10, IObservable<T11> t11, IObservable<T12> t12, IObservable<T13> t13, IObservable<T14> t14, IObservable<T15> t15, IObservable<T16> t16)
  1918. {
  1919. this.t1 = t1;
  1920. this.t2 = t2;
  1921. this.t3 = t3;
  1922. this.t4 = t4;
  1923. this.t5 = t5;
  1924. this.t6 = t6;
  1925. this.t7 = t7;
  1926. this.t8 = t8;
  1927. this.t9 = t9;
  1928. this.t10 = t10;
  1929. this.t11 = t11;
  1930. this.t12 = t12;
  1931. this.t13 = t13;
  1932. this.t14 = t14;
  1933. this.t15 = t15;
  1934. this.t16 = t16;
  1935. }
  1936. IObservable<T1> t1;
  1937. IObservable<T2> t2;
  1938. IObservable<T3> t3;
  1939. IObservable<T4> t4;
  1940. IObservable<T5> t5;
  1941. IObservable<T6> t6;
  1942. IObservable<T7> t7;
  1943. IObservable<T8> t8;
  1944. IObservable<T9> t9;
  1945. IObservable<T10> t10;
  1946. IObservable<T11> t11;
  1947. IObservable<T12> t12;
  1948. IObservable<T13> t13;
  1949. IObservable<T14> t14;
  1950. IObservable<T15> t15;
  1951. IObservable<T16> t16;
  1952. /*
  1953. public Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> And<T17> (IObservable<T17> other)
  1954. {
  1955. return new Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> (t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, other);
  1956. }
  1957. */
  1958. public Plan<TResult> Then<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector)
  1959. {
  1960. return new Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> (this, selector);
  1961. }
  1962. internal IObservable<TResult> AsObservable<TResult> (Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector)
  1963. {
  1964. var sub = new Subject<TResult> ();
  1965. bool [] done = new bool [16];
  1966. var q1 = new Queue<T1> ();
  1967. var q2 = new Queue<T2> ();
  1968. var q3 = new Queue<T3> ();
  1969. var q4 = new Queue<T4> ();
  1970. var q5 = new Queue<T5> ();
  1971. var q6 = new Queue<T6> ();
  1972. var q7 = new Queue<T7> ();
  1973. var q8 = new Queue<T8> ();
  1974. var q9 = new Queue<T9> ();
  1975. var q10 = new Queue<T10> ();
  1976. var q11 = new Queue<T11> ();
  1977. var q12 = new Queue<T12> ();
  1978. var q13 = new Queue<T13> ();
  1979. var q14 = new Queue<T14> ();
  1980. var q15 = new Queue<T15> ();
  1981. var q16 = new Queue<T16> ();
  1982. t1.Subscribe (Observer.Create<T1> (t => {
  1983. q1.Enqueue (t);
  1984. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  1985. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  1986. }, (ex) => sub.OnError (ex), () => {
  1987. done [0] = true;
  1988. if (done.All (b => b))
  1989. sub.OnCompleted ();
  1990. }));
  1991. t2.Subscribe (Observer.Create<T2> (t => {
  1992. q2.Enqueue (t);
  1993. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  1994. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  1995. }, (ex) => sub.OnError (ex), () => {
  1996. done [1] = true;
  1997. if (done.All (b => b))
  1998. sub.OnCompleted ();
  1999. }));
  2000. t3.Subscribe (Observer.Create<T3> (t => {
  2001. q3.Enqueue (t);
  2002. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2003. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2004. }, (ex) => sub.OnError (ex), () => {
  2005. done [2] = true;
  2006. if (done.All (b => b))
  2007. sub.OnCompleted ();
  2008. }));
  2009. t4.Subscribe (Observer.Create<T4> (t => {
  2010. q4.Enqueue (t);
  2011. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2012. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2013. }, (ex) => sub.OnError (ex), () => {
  2014. done [3] = true;
  2015. if (done.All (b => b))
  2016. sub.OnCompleted ();
  2017. }));
  2018. t5.Subscribe (Observer.Create<T5> (t => {
  2019. q5.Enqueue (t);
  2020. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2021. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2022. }, (ex) => sub.OnError (ex), () => {
  2023. done [4] = true;
  2024. if (done.All (b => b))
  2025. sub.OnCompleted ();
  2026. }));
  2027. t6.Subscribe (Observer.Create<T6> (t => {
  2028. q6.Enqueue (t);
  2029. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2030. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2031. }, (ex) => sub.OnError (ex), () => {
  2032. done [5] = true;
  2033. if (done.All (b => b))
  2034. sub.OnCompleted ();
  2035. }));
  2036. t7.Subscribe (Observer.Create<T7> (t => {
  2037. q7.Enqueue (t);
  2038. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2039. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2040. }, (ex) => sub.OnError (ex), () => {
  2041. done [6] = true;
  2042. if (done.All (b => b))
  2043. sub.OnCompleted ();
  2044. }));
  2045. t8.Subscribe (Observer.Create<T8> (t => {
  2046. q8.Enqueue (t);
  2047. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2048. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2049. }, (ex) => sub.OnError (ex), () => {
  2050. done [7] = true;
  2051. if (done.All (b => b))
  2052. sub.OnCompleted ();
  2053. }));
  2054. t9.Subscribe (Observer.Create<T9> (t => {
  2055. q9.Enqueue (t);
  2056. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2057. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2058. }, (ex) => sub.OnError (ex), () => {
  2059. done [8] = true;
  2060. if (done.All (b => b))
  2061. sub.OnCompleted ();
  2062. }));
  2063. t10.Subscribe (Observer.Create<T10> (t => {
  2064. q10.Enqueue (t);
  2065. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2066. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2067. }, (ex) => sub.OnError (ex), () => {
  2068. done [9] = true;
  2069. if (done.All (b => b))
  2070. sub.OnCompleted ();
  2071. }));
  2072. t11.Subscribe (Observer.Create<T11> (t => {
  2073. q11.Enqueue (t);
  2074. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2075. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2076. }, (ex) => sub.OnError (ex), () => {
  2077. done [10] = true;
  2078. if (done.All (b => b))
  2079. sub.OnCompleted ();
  2080. }));
  2081. t12.Subscribe (Observer.Create<T12> (t => {
  2082. q12.Enqueue (t);
  2083. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2084. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2085. }, (ex) => sub.OnError (ex), () => {
  2086. done [11] = true;
  2087. if (done.All (b => b))
  2088. sub.OnCompleted ();
  2089. }));
  2090. t13.Subscribe (Observer.Create<T13> (t => {
  2091. q13.Enqueue (t);
  2092. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2093. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2094. }, (ex) => sub.OnError (ex), () => {
  2095. done [12] = true;
  2096. if (done.All (b => b))
  2097. sub.OnCompleted ();
  2098. }));
  2099. t14.Subscribe (Observer.Create<T14> (t => {
  2100. q14.Enqueue (t);
  2101. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2102. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2103. }, (ex) => sub.OnError (ex), () => {
  2104. done [13] = true;
  2105. if (done.All (b => b))
  2106. sub.OnCompleted ();
  2107. }));
  2108. t15.Subscribe (Observer.Create<T15> (t => {
  2109. q15.Enqueue (t);
  2110. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2111. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2112. }, (ex) => sub.OnError (ex), () => {
  2113. done [14] = true;
  2114. if (done.All (b => b))
  2115. sub.OnCompleted ();
  2116. }));
  2117. t16.Subscribe (Observer.Create<T16> (t => {
  2118. q16.Enqueue (t);
  2119. if (q1.Count > 0 && q2.Count > 0 && q3.Count > 0 && q4.Count > 0 && q5.Count > 0 && q6.Count > 0 && q7.Count > 0 && q8.Count > 0 && q9.Count > 0 && q10.Count > 0 && q11.Count > 0 && q12.Count > 0 && q13.Count > 0 && q14.Count > 0 && q15.Count > 0 && q16.Count > 0)
  2120. sub.OnNext (selector (q1.Dequeue (), q2.Dequeue (), q3.Dequeue (), q4.Dequeue (), q5.Dequeue (), q6.Dequeue (), q7.Dequeue (), q8.Dequeue (), q9.Dequeue (), q10.Dequeue (), q11.Dequeue (), q12.Dequeue (), q13.Dequeue (), q14.Dequeue (), q15.Dequeue (), q16.Dequeue ()));
  2121. }, (ex) => sub.OnError (ex), () => {
  2122. done [15] = true;
  2123. if (done.All (b => b))
  2124. sub.OnCompleted ();
  2125. }));
  2126. return sub;
  2127. }
  2128. }
  2129. internal class Plan<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> : Plan<TResult>
  2130. {
  2131. Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> pattern;
  2132. Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector;
  2133. public Plan (Pattern<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> pattern, Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult> selector)
  2134. {
  2135. this.pattern = pattern;
  2136. this.selector = selector;
  2137. }
  2138. internal override IObservable<TResult> AsObservable ()
  2139. {
  2140. return pattern.AsObservable<TResult> (selector);
  2141. }
  2142. }
  2143. }