Improve Dictionary TryGetValue size/perfomance (dotnet/coreclr#27195)
[mono-project.git] / netcore / System.Private.CoreLib / shared / System / TupleExtensions.cs
blob58547fc6fb29348a15ebb29f35f2f423bf046f83
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
5 #pragma warning disable SA1141 // explicitly not using tuple syntax in tuple implementation
7 using System.ComponentModel;
8 using System.Runtime.CompilerServices;
10 namespace System
12 /// <summary>
13 /// Provides extension methods for <see cref="Tuple"/> instances to interop with C# tuples features (deconstruction syntax, converting from and to <see cref="ValueTuple"/>).
14 /// </summary>
15 public static class TupleExtensions
17 #region Deconstruct
18 /// <summary>
19 /// Deconstruct a properly nested <see cref="Tuple"/> with 1 elements.
20 /// </summary>
21 [EditorBrowsable(EditorBrowsableState.Never)]
22 public static void Deconstruct<T1>(
23 this Tuple<T1> value,
24 out T1 item1)
26 item1 = value.Item1;
29 /// <summary>
30 /// Deconstruct a properly nested <see cref="Tuple"/> with 2 elements.
31 /// </summary>
32 [EditorBrowsable(EditorBrowsableState.Never)]
33 public static void Deconstruct<T1, T2>(
34 this Tuple<T1, T2> value,
35 out T1 item1, out T2 item2)
37 item1 = value.Item1;
38 item2 = value.Item2;
41 /// <summary>
42 /// Deconstruct a properly nested <see cref="Tuple"/> with 3 elements.
43 /// </summary>
44 [EditorBrowsable(EditorBrowsableState.Never)]
45 public static void Deconstruct<T1, T2, T3>(
46 this Tuple<T1, T2, T3> value,
47 out T1 item1, out T2 item2, out T3 item3)
49 item1 = value.Item1;
50 item2 = value.Item2;
51 item3 = value.Item3;
54 /// <summary>
55 /// Deconstruct a properly nested <see cref="Tuple"/> with 4 elements.
56 /// </summary>
57 [EditorBrowsable(EditorBrowsableState.Never)]
58 public static void Deconstruct<T1, T2, T3, T4>(
59 this Tuple<T1, T2, T3, T4> value,
60 out T1 item1, out T2 item2, out T3 item3, out T4 item4)
62 item1 = value.Item1;
63 item2 = value.Item2;
64 item3 = value.Item3;
65 item4 = value.Item4;
68 /// <summary>
69 /// Deconstruct a properly nested <see cref="Tuple"/> with 5 elements.
70 /// </summary>
71 [EditorBrowsable(EditorBrowsableState.Never)]
72 public static void Deconstruct<T1, T2, T3, T4, T5>(
73 this Tuple<T1, T2, T3, T4, T5> value,
74 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5)
76 item1 = value.Item1;
77 item2 = value.Item2;
78 item3 = value.Item3;
79 item4 = value.Item4;
80 item5 = value.Item5;
83 /// <summary>
84 /// Deconstruct a properly nested <see cref="Tuple"/> with 6 elements.
85 /// </summary>
86 [EditorBrowsable(EditorBrowsableState.Never)]
87 public static void Deconstruct<T1, T2, T3, T4, T5, T6>(
88 this Tuple<T1, T2, T3, T4, T5, T6> value,
89 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6)
91 item1 = value.Item1;
92 item2 = value.Item2;
93 item3 = value.Item3;
94 item4 = value.Item4;
95 item5 = value.Item5;
96 item6 = value.Item6;
99 /// <summary>
100 /// Deconstruct a properly nested <see cref="Tuple"/> with 7 elements.
101 /// </summary>
102 [EditorBrowsable(EditorBrowsableState.Never)]
103 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7>(
104 this Tuple<T1, T2, T3, T4, T5, T6, T7> value,
105 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7)
107 item1 = value.Item1;
108 item2 = value.Item2;
109 item3 = value.Item3;
110 item4 = value.Item4;
111 item5 = value.Item5;
112 item6 = value.Item6;
113 item7 = value.Item7;
116 /// <summary>
117 /// Deconstruct a properly nested <see cref="Tuple"/> with 8 elements.
118 /// </summary>
119 [EditorBrowsable(EditorBrowsableState.Never)]
120 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8>(
121 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> value,
122 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8)
124 item1 = value.Item1;
125 item2 = value.Item2;
126 item3 = value.Item3;
127 item4 = value.Item4;
128 item5 = value.Item5;
129 item6 = value.Item6;
130 item7 = value.Item7;
131 item8 = value.Rest.Item1;
134 /// <summary>
135 /// Deconstruct a properly nested <see cref="Tuple"/> with 9 elements.
136 /// </summary>
137 [EditorBrowsable(EditorBrowsableState.Never)]
138 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
139 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9>> value,
140 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9)
142 item1 = value.Item1;
143 item2 = value.Item2;
144 item3 = value.Item3;
145 item4 = value.Item4;
146 item5 = value.Item5;
147 item6 = value.Item6;
148 item7 = value.Item7;
149 item8 = value.Rest.Item1;
150 item9 = value.Rest.Item2;
153 /// <summary>
154 /// Deconstruct a properly nested <see cref="Tuple"/> with 10 elements.
155 /// </summary>
156 [EditorBrowsable(EditorBrowsableState.Never)]
157 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
158 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10>> value,
159 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10)
161 item1 = value.Item1;
162 item2 = value.Item2;
163 item3 = value.Item3;
164 item4 = value.Item4;
165 item5 = value.Item5;
166 item6 = value.Item6;
167 item7 = value.Item7;
168 item8 = value.Rest.Item1;
169 item9 = value.Rest.Item2;
170 item10 = value.Rest.Item3;
173 /// <summary>
174 /// Deconstruct a properly nested <see cref="Tuple"/> with 11 elements.
175 /// </summary>
176 [EditorBrowsable(EditorBrowsableState.Never)]
177 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
178 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11>> value,
179 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11)
181 item1 = value.Item1;
182 item2 = value.Item2;
183 item3 = value.Item3;
184 item4 = value.Item4;
185 item5 = value.Item5;
186 item6 = value.Item6;
187 item7 = value.Item7;
188 item8 = value.Rest.Item1;
189 item9 = value.Rest.Item2;
190 item10 = value.Rest.Item3;
191 item11 = value.Rest.Item4;
194 /// <summary>
195 /// Deconstruct a properly nested <see cref="Tuple"/> with 12 elements.
196 /// </summary>
197 [EditorBrowsable(EditorBrowsableState.Never)]
198 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
199 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12>> value,
200 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12)
202 item1 = value.Item1;
203 item2 = value.Item2;
204 item3 = value.Item3;
205 item4 = value.Item4;
206 item5 = value.Item5;
207 item6 = value.Item6;
208 item7 = value.Item7;
209 item8 = value.Rest.Item1;
210 item9 = value.Rest.Item2;
211 item10 = value.Rest.Item3;
212 item11 = value.Rest.Item4;
213 item12 = value.Rest.Item5;
216 /// <summary>
217 /// Deconstruct a properly nested <see cref="Tuple"/> with 13 elements.
218 /// </summary>
219 [EditorBrowsable(EditorBrowsableState.Never)]
220 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
221 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13>> value,
222 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13)
224 item1 = value.Item1;
225 item2 = value.Item2;
226 item3 = value.Item3;
227 item4 = value.Item4;
228 item5 = value.Item5;
229 item6 = value.Item6;
230 item7 = value.Item7;
231 item8 = value.Rest.Item1;
232 item9 = value.Rest.Item2;
233 item10 = value.Rest.Item3;
234 item11 = value.Rest.Item4;
235 item12 = value.Rest.Item5;
236 item13 = value.Rest.Item6;
239 /// <summary>
240 /// Deconstruct a properly nested <see cref="Tuple"/> with 14 elements.
241 /// </summary>
242 [EditorBrowsable(EditorBrowsableState.Never)]
243 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
244 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14>> value,
245 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14)
247 item1 = value.Item1;
248 item2 = value.Item2;
249 item3 = value.Item3;
250 item4 = value.Item4;
251 item5 = value.Item5;
252 item6 = value.Item6;
253 item7 = value.Item7;
254 item8 = value.Rest.Item1;
255 item9 = value.Rest.Item2;
256 item10 = value.Rest.Item3;
257 item11 = value.Rest.Item4;
258 item12 = value.Rest.Item5;
259 item13 = value.Rest.Item6;
260 item14 = value.Rest.Item7;
263 /// <summary>
264 /// Deconstruct a properly nested <see cref="Tuple"/> with 15 elements.
265 /// </summary>
266 [EditorBrowsable(EditorBrowsableState.Never)]
267 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
268 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15>>> value,
269 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15)
271 item1 = value.Item1;
272 item2 = value.Item2;
273 item3 = value.Item3;
274 item4 = value.Item4;
275 item5 = value.Item5;
276 item6 = value.Item6;
277 item7 = value.Item7;
278 item8 = value.Rest.Item1;
279 item9 = value.Rest.Item2;
280 item10 = value.Rest.Item3;
281 item11 = value.Rest.Item4;
282 item12 = value.Rest.Item5;
283 item13 = value.Rest.Item6;
284 item14 = value.Rest.Item7;
285 item15 = value.Rest.Rest.Item1;
288 /// <summary>
289 /// Deconstruct a properly nested <see cref="Tuple"/> with 16 elements.
290 /// </summary>
291 [EditorBrowsable(EditorBrowsableState.Never)]
292 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
293 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16>>> value,
294 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16)
296 item1 = value.Item1;
297 item2 = value.Item2;
298 item3 = value.Item3;
299 item4 = value.Item4;
300 item5 = value.Item5;
301 item6 = value.Item6;
302 item7 = value.Item7;
303 item8 = value.Rest.Item1;
304 item9 = value.Rest.Item2;
305 item10 = value.Rest.Item3;
306 item11 = value.Rest.Item4;
307 item12 = value.Rest.Item5;
308 item13 = value.Rest.Item6;
309 item14 = value.Rest.Item7;
310 item15 = value.Rest.Rest.Item1;
311 item16 = value.Rest.Rest.Item2;
314 /// <summary>
315 /// Deconstruct a properly nested <see cref="Tuple"/> with 17 elements.
316 /// </summary>
317 [EditorBrowsable(EditorBrowsableState.Never)]
318 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
319 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17>>> value,
320 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17)
322 item1 = value.Item1;
323 item2 = value.Item2;
324 item3 = value.Item3;
325 item4 = value.Item4;
326 item5 = value.Item5;
327 item6 = value.Item6;
328 item7 = value.Item7;
329 item8 = value.Rest.Item1;
330 item9 = value.Rest.Item2;
331 item10 = value.Rest.Item3;
332 item11 = value.Rest.Item4;
333 item12 = value.Rest.Item5;
334 item13 = value.Rest.Item6;
335 item14 = value.Rest.Item7;
336 item15 = value.Rest.Rest.Item1;
337 item16 = value.Rest.Rest.Item2;
338 item17 = value.Rest.Rest.Item3;
341 /// <summary>
342 /// Deconstruct a properly nested <see cref="Tuple"/> with 18 elements.
343 /// </summary>
344 [EditorBrowsable(EditorBrowsableState.Never)]
345 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(
346 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18>>> value,
347 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18)
349 item1 = value.Item1;
350 item2 = value.Item2;
351 item3 = value.Item3;
352 item4 = value.Item4;
353 item5 = value.Item5;
354 item6 = value.Item6;
355 item7 = value.Item7;
356 item8 = value.Rest.Item1;
357 item9 = value.Rest.Item2;
358 item10 = value.Rest.Item3;
359 item11 = value.Rest.Item4;
360 item12 = value.Rest.Item5;
361 item13 = value.Rest.Item6;
362 item14 = value.Rest.Item7;
363 item15 = value.Rest.Rest.Item1;
364 item16 = value.Rest.Rest.Item2;
365 item17 = value.Rest.Rest.Item3;
366 item18 = value.Rest.Rest.Item4;
369 /// <summary>
370 /// Deconstruct a properly nested <see cref="Tuple"/> with 19 elements.
371 /// </summary>
372 [EditorBrowsable(EditorBrowsableState.Never)]
373 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(
374 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19>>> value,
375 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19)
377 item1 = value.Item1;
378 item2 = value.Item2;
379 item3 = value.Item3;
380 item4 = value.Item4;
381 item5 = value.Item5;
382 item6 = value.Item6;
383 item7 = value.Item7;
384 item8 = value.Rest.Item1;
385 item9 = value.Rest.Item2;
386 item10 = value.Rest.Item3;
387 item11 = value.Rest.Item4;
388 item12 = value.Rest.Item5;
389 item13 = value.Rest.Item6;
390 item14 = value.Rest.Item7;
391 item15 = value.Rest.Rest.Item1;
392 item16 = value.Rest.Rest.Item2;
393 item17 = value.Rest.Rest.Item3;
394 item18 = value.Rest.Rest.Item4;
395 item19 = value.Rest.Rest.Item5;
398 /// <summary>
399 /// Deconstruct a properly nested <see cref="Tuple"/> with 20 elements.
400 /// </summary>
401 [EditorBrowsable(EditorBrowsableState.Never)]
402 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(
403 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20>>> value,
404 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20)
406 item1 = value.Item1;
407 item2 = value.Item2;
408 item3 = value.Item3;
409 item4 = value.Item4;
410 item5 = value.Item5;
411 item6 = value.Item6;
412 item7 = value.Item7;
413 item8 = value.Rest.Item1;
414 item9 = value.Rest.Item2;
415 item10 = value.Rest.Item3;
416 item11 = value.Rest.Item4;
417 item12 = value.Rest.Item5;
418 item13 = value.Rest.Item6;
419 item14 = value.Rest.Item7;
420 item15 = value.Rest.Rest.Item1;
421 item16 = value.Rest.Rest.Item2;
422 item17 = value.Rest.Rest.Item3;
423 item18 = value.Rest.Rest.Item4;
424 item19 = value.Rest.Rest.Item5;
425 item20 = value.Rest.Rest.Item6;
428 /// <summary>
429 /// Deconstruct a properly nested <see cref="Tuple"/> with 21 elements.
430 /// </summary>
431 [EditorBrowsable(EditorBrowsableState.Never)]
432 public static void Deconstruct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(
433 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20, T21>>> value,
434 out T1 item1, out T2 item2, out T3 item3, out T4 item4, out T5 item5, out T6 item6, out T7 item7, out T8 item8, out T9 item9, out T10 item10, out T11 item11, out T12 item12, out T13 item13, out T14 item14, out T15 item15, out T16 item16, out T17 item17, out T18 item18, out T19 item19, out T20 item20, out T21 item21)
436 item1 = value.Item1;
437 item2 = value.Item2;
438 item3 = value.Item3;
439 item4 = value.Item4;
440 item5 = value.Item5;
441 item6 = value.Item6;
442 item7 = value.Item7;
443 item8 = value.Rest.Item1;
444 item9 = value.Rest.Item2;
445 item10 = value.Rest.Item3;
446 item11 = value.Rest.Item4;
447 item12 = value.Rest.Item5;
448 item13 = value.Rest.Item6;
449 item14 = value.Rest.Item7;
450 item15 = value.Rest.Rest.Item1;
451 item16 = value.Rest.Rest.Item2;
452 item17 = value.Rest.Rest.Item3;
453 item18 = value.Rest.Rest.Item4;
454 item19 = value.Rest.Rest.Item5;
455 item20 = value.Rest.Rest.Item6;
456 item21 = value.Rest.Rest.Item7;
458 #endregion
460 #region ToValueTuple
461 /// <summary>
462 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 1 element.
463 /// </summary>
464 public static ValueTuple<T1>
465 ToValueTuple<T1>(
466 this Tuple<T1> value)
468 return ValueTuple.Create(value.Item1);
471 /// <summary>
472 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 2 elements.
473 /// </summary>
474 public static ValueTuple<T1, T2>
475 ToValueTuple<T1, T2>(
476 this Tuple<T1, T2> value)
478 return ValueTuple.Create(value.Item1, value.Item2);
481 /// <summary>
482 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 3 elements.
483 /// </summary>
484 public static ValueTuple<T1, T2, T3>
485 ToValueTuple<T1, T2, T3>(
486 this Tuple<T1, T2, T3> value)
488 return ValueTuple.Create(value.Item1, value.Item2, value.Item3);
491 /// <summary>
492 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 4 elements.
493 /// </summary>
494 public static ValueTuple<T1, T2, T3, T4>
495 ToValueTuple<T1, T2, T3, T4>(
496 this Tuple<T1, T2, T3, T4> value)
498 return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4);
501 /// <summary>
502 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 5 elements.
503 /// </summary>
504 public static ValueTuple<T1, T2, T3, T4, T5>
505 ToValueTuple<T1, T2, T3, T4, T5>(
506 this Tuple<T1, T2, T3, T4, T5> value)
508 return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5);
511 /// <summary>
512 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 6 elements.
513 /// </summary>
514 public static ValueTuple<T1, T2, T3, T4, T5, T6>
515 ToValueTuple<T1, T2, T3, T4, T5, T6>(
516 this Tuple<T1, T2, T3, T4, T5, T6> value)
518 return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6);
521 /// <summary>
522 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 7 elements.
523 /// </summary>
524 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7>
525 ToValueTuple<T1, T2, T3, T4, T5, T6, T7>(
526 this Tuple<T1, T2, T3, T4, T5, T6, T7> value)
528 return ValueTuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7);
531 /// <summary>
532 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 8 elements.
533 /// </summary>
534 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8>>
535 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8>(
536 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>> value)
538 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
539 ValueTuple.Create(value.Rest.Item1));
542 /// <summary>
543 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 9 elements.
544 /// </summary>
545 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9>>
546 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
547 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9>> value)
549 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
550 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2));
553 /// <summary>
554 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 10 elements.
555 /// </summary>
556 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10>>
557 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
558 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10>> value)
560 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
561 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3));
564 /// <summary>
565 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 11 elements.
566 /// </summary>
567 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11>>
568 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
569 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11>> value)
571 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
572 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4));
575 /// <summary>
576 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 12 elements.
577 /// </summary>
578 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12>>
579 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
580 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12>> value)
582 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
583 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5));
586 /// <summary>
587 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 13 elements.
588 /// </summary>
589 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13>>
590 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
591 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13>> value)
593 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
594 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6));
597 /// <summary>
598 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 14 elements.
599 /// </summary>
600 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14>>
601 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
602 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14>> value)
604 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
605 ValueTuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7));
608 /// <summary>
609 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 15 elements.
610 /// </summary>
611 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15>>>
612 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
613 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15>>> value)
615 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
616 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
617 ValueTuple.Create(value.Rest.Rest.Item1)));
620 /// <summary>
621 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 16 elements.
622 /// </summary>
623 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16>>>
624 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
625 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16>>> value)
627 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
628 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
629 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2)));
632 /// <summary>
633 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 17 elements.
634 /// </summary>
635 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17>>>
636 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
637 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17>>> value)
639 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
640 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
641 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3)));
644 /// <summary>
645 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 18 elements.
646 /// </summary>
647 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18>>>
648 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(
649 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18>>> value)
651 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
652 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
653 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4)));
656 /// <summary>
657 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 19 elements.
658 /// </summary>
659 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19>>>
660 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(
661 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19>>> value)
663 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
664 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
665 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5)));
668 /// <summary>
669 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 20 elements.
670 /// </summary>
671 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19, T20>>>
672 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(
673 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20>>> value)
675 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
676 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
677 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6)));
680 /// <summary>
681 /// Make a properly nested <see cref="ValueTuple"/> from a properly nested <see cref="Tuple"/> with 21 elements.
682 /// </summary>
683 public static ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19, T20, T21>>>
684 ToValueTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(
685 this Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20, T21>>> value)
687 return CreateLong(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
688 CreateLong(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
689 ValueTuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6, value.Rest.Rest.Item7)));
691 #endregion
693 #region ToTuple
694 /// <summary>
695 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 1 element.
696 /// </summary>
697 public static Tuple<T1>
698 ToTuple<T1>(
699 this ValueTuple<T1> value)
701 return Tuple.Create(value.Item1);
704 /// <summary>
705 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 2 elements.
706 /// </summary>
707 public static Tuple<T1, T2>
708 ToTuple<T1, T2>(
709 this ValueTuple<T1, T2> value)
711 return Tuple.Create(value.Item1, value.Item2);
714 /// <summary>
715 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 3 elements.
716 /// </summary>
717 public static Tuple<T1, T2, T3>
718 ToTuple<T1, T2, T3>(
719 this ValueTuple<T1, T2, T3> value)
721 return Tuple.Create(value.Item1, value.Item2, value.Item3);
724 /// <summary>
725 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 4 elements.
726 /// </summary>
727 public static Tuple<T1, T2, T3, T4>
728 ToTuple<T1, T2, T3, T4>(
729 this ValueTuple<T1, T2, T3, T4> value)
731 return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4);
734 /// <summary>
735 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 5 elements.
736 /// </summary>
737 public static Tuple<T1, T2, T3, T4, T5>
738 ToTuple<T1, T2, T3, T4, T5>(
739 this ValueTuple<T1, T2, T3, T4, T5> value)
741 return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5);
744 /// <summary>
745 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 6 elements.
746 /// </summary>
747 public static Tuple<T1, T2, T3, T4, T5, T6>
748 ToTuple<T1, T2, T3, T4, T5, T6>(
749 this ValueTuple<T1, T2, T3, T4, T5, T6> value)
751 return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6);
754 /// <summary>
755 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 7 elements.
756 /// </summary>
757 public static Tuple<T1, T2, T3, T4, T5, T6, T7>
758 ToTuple<T1, T2, T3, T4, T5, T6, T7>(
759 this ValueTuple<T1, T2, T3, T4, T5, T6, T7> value)
761 return Tuple.Create(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7);
764 /// <summary>
765 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 8 elements.
766 /// </summary>
767 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8>>
768 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8>(
769 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8>> value)
771 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
772 Tuple.Create(value.Rest.Item1));
775 /// <summary>
776 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 9 elements.
777 /// </summary>
778 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9>>
779 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9>(
780 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9>> value)
782 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
783 Tuple.Create(value.Rest.Item1, value.Rest.Item2));
786 /// <summary>
787 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 10 elements.
788 /// </summary>
789 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10>>
790 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(
791 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10>> value)
793 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
794 Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3));
797 /// <summary>
798 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 11 elements.
799 /// </summary>
800 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11>>
801 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(
802 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11>> value)
804 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
805 Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4));
808 /// <summary>
809 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 12 elements.
810 /// </summary>
811 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12>>
812 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(
813 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12>> value)
815 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
816 Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5));
819 /// <summary>
820 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 13 elements.
821 /// </summary>
822 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13>>
823 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(
824 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13>> value)
826 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
827 Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6));
830 /// <summary>
831 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 14 elements.
832 /// </summary>
833 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14>>
834 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(
835 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14>> value)
837 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
838 Tuple.Create(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7));
841 /// <summary>
842 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 15 elements.
843 /// </summary>
844 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15>>>
845 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(
846 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15>>> value)
848 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
849 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
850 Tuple.Create(value.Rest.Rest.Item1)));
853 /// <summary>
854 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 16 elements.
855 /// </summary>
856 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16>>>
857 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(
858 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16>>> value)
860 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
861 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
862 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2)));
865 /// <summary>
866 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 17 elements.
867 /// </summary>
868 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17>>>
869 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(
870 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17>>> value)
872 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
873 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
874 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3)));
877 /// <summary>
878 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 18 elements.
879 /// </summary>
880 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18>>>
881 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(
882 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18>>> value)
884 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
885 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
886 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4)));
889 /// <summary>
890 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 19 elements.
891 /// </summary>
892 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19>>>
893 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(
894 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19>>> value)
896 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
897 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
898 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5)));
901 /// <summary>
902 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 20 elements.
903 /// </summary>
904 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20>>>
905 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(
906 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19, T20>>> value)
908 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
909 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
910 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6)));
913 /// <summary>
914 /// Make a properly nested <see cref="Tuple"/> from a properly nested <see cref="ValueTuple"/> with 21 elements.
915 /// </summary>
916 public static Tuple<T1, T2, T3, T4, T5, T6, T7, Tuple<T8, T9, T10, T11, T12, T13, T14, Tuple<T15, T16, T17, T18, T19, T20, T21>>>
917 ToTuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(
918 this ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8, T9, T10, T11, T12, T13, T14, ValueTuple<T15, T16, T17, T18, T19, T20, T21>>> value)
920 return CreateLongRef(value.Item1, value.Item2, value.Item3, value.Item4, value.Item5, value.Item6, value.Item7,
921 CreateLongRef(value.Rest.Item1, value.Rest.Item2, value.Rest.Item3, value.Rest.Item4, value.Rest.Item5, value.Rest.Item6, value.Rest.Item7,
922 Tuple.Create(value.Rest.Rest.Item1, value.Rest.Rest.Item2, value.Rest.Rest.Item3, value.Rest.Rest.Item4, value.Rest.Rest.Item5, value.Rest.Rest.Item6, value.Rest.Rest.Item7)));
924 #endregion
926 private static ValueTuple<T1, T2, T3, T4, T5, T6, T7, TRest> CreateLong<T1, T2, T3, T4, T5, T6, T7, TRest>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest) where TRest : struct, ITuple =>
927 new ValueTuple<T1, T2, T3, T4, T5, T6, T7, TRest>(item1, item2, item3, item4, item5, item6, item7, rest);
929 private static Tuple<T1, T2, T3, T4, T5, T6, T7, TRest> CreateLongRef<T1, T2, T3, T4, T5, T6, T7, TRest>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, TRest rest) where TRest : ITuple =>
930 new Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>(item1, item2, item3, item4, item5, item6, item7, rest);