diff --git a/README.md b/README.md index 498334d2..8846e4c1 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ We have opened a Spark Project Improvement Proposal: [Kotlin support for Apache - [toList and toArray](#tolist-and-toarray-methods) - [Column infix/operator functions](#column-infixoperator-functions) - [Overload Resolution Ambiguity](#overload-resolution-ambiguity) + - [Tuples](#tuples) - [Examples](#examples) - [Reporting issues/Support](#reporting-issuessupport) - [Code of Conduct](#code-of-conduct) @@ -204,6 +205,67 @@ We had to implement the functions `reduceGroups` and `reduce` for Kotlin separat We have a special example of work with this function in the [Groups example](https://github.com/JetBrains/kotlin-spark-api/blob/main/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Group.kt). +### Tuples + +Inspired by [ScalaTuplesInKotlin](https://github.com/Jolanrensen/ScalaTuplesInKotlin), the API introduces a lot of helper- extension functions +to make working with Scala Tuples a breeze in your Kotlin Spark projects. While working with data classes is encouraged, +for pair-like Datasets / RDDs / DStreams Scala Tuples are recommended, both for the useful helper functions, as well as Spark performance. +To enable these features +simply add +```kotlin +import org.jetbrains.kotlinx.spark.api.tuples.* +``` +to the start of your file. + +Tuple creation can be done in the following manners: +```kotlin +val a: Tuple2 = tupleOf(1, 2L) +val b: Tuple3 = t("test", 1.0, 2) +val c: Tuple3 = 5f X "aaa" X 1 +``` +Tuples can be expanded and merged like this: +```kotlin +// expand +tupleOf(1, 2).appendedBy(3) == tupleOf(1, 2, 3) +tupleOf(1, 2) + 3 == tupleOf(1, 2, 3) +tupleOf(2, 3).prependedBy(1) == tupleOf(1, 2, 3) +1 + tupleOf(2, 3) == tupleOf(1, 2, 3) + +// merge +tupleOf(1, 2) concat tupleOf(3, 4) == tupleOf(1, 2, 3, 4) +tupleOf(1, 2) + tupleOf(3, 4) == tupleOf(1, 2, 3, 4) + +// extend tuple instead of merging with it +tupleOf(1, 2).appendedBy(tupleOf(3, 4)) == tupleOf(1, 2, tupleOf(3, 4)) +tupleOf(1, 2) + tupleOf(tupleOf(3, 4)) == tupleOf(1, 2, tupleOf(3, 4)) +``` + +The concept of `EmptyTuple` from Scala 3 is also already present: +```kotlin +tupleOf(1).dropLast() == tupleOf() == emptyTuple() +``` + +Finally, all these tuple helper functions are also baked in: + +- `componentX()` for destructuring: `val (a, b) = tuple` +- `dropLast() / dropFirst()` +- `contains(x)` for `if (x in tuple) { ... }` +- `iterator()` for `for (x in tuple) { ... }` +- `asIterable()` +- `size` +- `get(n) / get(i..j)` for `tuple[1] / tuple[i..j]` +- `getOrNull(n) / getOrNull(i..j)` +- `getAs(n) / getAs(i..j)` +- `getAsOrNull(n) / getAsOrNull(i..j)` +- `copy(_1 = ..., _5 = ...)` +- `first() / last()` +- `_1`, `_6` etc. (instead of `_1()`, `_6()`) +- `zip` +- `dropN() / dropLastN()` +- `takeN() / takeLastN()` +- `splitAtN()` +- `map` +- `cast` ## Examples diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/CachedOperations.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/CachedOperations.kt index e8e4dbf1..1904de74 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/CachedOperations.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/CachedOperations.kt @@ -20,17 +20,18 @@ package org.jetbrains.kotlinx.spark.examples import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* fun main() { withSpark { dsOf(1, 2, 3, 4, 5) - .map { it to (it + 2) } + .map { it X (it + 2) } .withCached { showDS() - filter { it.first % 2 == 0 }.showDS() + filter { it._1 % 2 == 0 }.showDS() } - .map { c(it.first, it.second, (it.first + it.second) * 2) } + .map { it.appendedBy(it._1 + it._2 * 2) } .show() } } diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Collect.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Collect.kt index 685c1ae4..a956bd15 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Collect.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Collect.kt @@ -21,6 +21,7 @@ package org.jetbrains.kotlinx.spark.examples import org.apache.spark.sql.Row import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* fun main() { withSpark { @@ -39,7 +40,7 @@ fun main() { } dsOf(1, 2, 3) - .map { c(it, it + 1, it + 2) } + .map { t(it, it + 1, it + 2) } .to() .select("_1") .collectAsList() diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Group.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Group.kt index 89ded8e3..7fde698e 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Group.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Group.kt @@ -20,12 +20,19 @@ package org.jetbrains.kotlinx.spark.examples import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* fun main() { withSpark { - dsOf(c(1, "a"), c(1, "b"), c(2, "c")) + dsOf( + 1 X "a", + 1 X "b", + 2 X "c", + ) .groupByKey { it._1 } - .reduceGroupsK { a, b -> c(a._1 + b._1, a._2 + b._2) } + .reduceGroupsK { a, b -> + tupleOf(a._1 + b._1, a._2 + b._2) + } .show() } } diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Join.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Join.kt index 594a2474..684674f2 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Join.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Join.kt @@ -20,6 +20,7 @@ package org.jetbrains.kotlinx.spark.examples import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* data class Left(val id: Int, val name: String) @@ -32,10 +33,12 @@ fun main() { val first = dsOf(Left(1, "a"), Left(2, "b")) val second = dsOf(Right(1, 100), Right(3, 300)) first - .leftJoin(second, first.col("id").eq(second.col("id"))) + .leftJoin(second, first.col("id") eq second.col("id")) .debugCodegen() .also { it.show() } - .map { c(it.first.id, it.first.name, it.second?.value) } + .map { (left, right) -> + left.id X left.name X right?.value + } .show() } diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Main.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Main.kt index a253c12d..0fc2517f 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Main.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/Main.kt @@ -20,36 +20,53 @@ package org.jetbrains.kotlinx.spark.examples import org.apache.spark.api.java.function.ReduceFunction +import org.apache.spark.sql.Dataset import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* +import scala.* data class Q(val id: Int, val text: T) +@Suppress("RedundantLambdaArrow", "UsePropertyAccessSyntax") object Main { @JvmStatic fun main(args: Array) { - val spark = SparkSession .builder() .master("local[2]") - .appName("Simple Application").orCreate - - val triples = spark - .toDS(listOf(Q(1, 1 to null), Q(2, 2 to "22"), Q(3, 3 to "333"))) - .map { (a, b) -> a + b.first to b.second?.length } - .map { it to 1 } - .map { (a, b) -> Triple(a.first, a.second, b) } + .appName("Simple Application") + .getOrCreate() + val triples: Dataset> = spark + .toDS( + listOf( + Q(1, 1 X null), + Q(2, 2 X "22"), + Q(3, 3 X "333"), + ) + ) + .map { (a, b) -> t(a + b._1, b._2?.length) } + .map { it: Tuple2 -> it + 1 } // add counter val pairs = spark - .toDS(listOf(2 to "hell", 4 to "moon", 6 to "berry")) + .toDS( + listOf( + 2 X "hell", + 4 X "moon", + 6 X "berry", + ) + ) triples - .leftJoin(pairs, triples.col("first").multiply(2).eq(pairs.col("first"))) + .leftJoin( + right = pairs, + col = triples("_1").multiply(2) eq pairs("_1"), + ) // .also { it.printSchema() } - .map { (triple, pair) -> Five(triple.first, triple.second, triple.third, pair?.first, pair?.second) } + .map { (triple, pair) -> Five(triple._1, triple._2, triple._3, pair?._1, pair?._2) } .groupByKey { it.a } .reduceGroupsK { v1, v2 -> v1.copy(a = v1.a + v2.a, b = v1.a + v2.a) } - .map { it.second } + .map { it._2 } .repartition(1) .withCached { write() diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/MapAndListOperations.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/MapAndListOperations.kt index c67504cf..8d36017d 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/MapAndListOperations.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/MapAndListOperations.kt @@ -20,16 +20,21 @@ package org.jetbrains.kotlinx.spark.examples import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* fun main() { withSpark(props = mapOf("spark.sql.codegen.wholeStage" to true)) { dsOf( - mapOf(1 to c(1, 2, 3), 2 to c(1, 2, 3)), - mapOf(3 to c(1, 2, 3), 4 to c(1, 2, 3)), + mapOf(1 to t(1, 2, 3), 2 to t(1, 2, 3)), + mapOf(3 to t(1, 2, 3), 4 to t(1, 2, 3)), ) - .flatMap { it.toList().map { p -> listOf(p.first, p.second._1, p.second._2, p.second._3) }.iterator() } + .flatMap { + it.toList() + .map { (first, tuple) -> (first + tuple).toList() } + .iterator() + } .flatten() - .map { c(it) } + .map { tupleOf(it) } .also { it.printSchema() } .distinct() .sort("_1") diff --git a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/WordCount.kt b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/WordCount.kt index 996e36be..c08a9df5 100644 --- a/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/WordCount.kt +++ b/examples/src/main/kotlin/org/jetbrains/kotlinx/spark/examples/WordCount.kt @@ -21,6 +21,7 @@ package org.jetbrains.kotlinx.spark.examples import org.apache.spark.sql.Dataset import org.jetbrains.kotlinx.spark.api.* +import org.jetbrains.kotlinx.spark.api.tuples.* const val MEANINGFUL_WORD_LENGTH = 4 @@ -33,15 +34,15 @@ fun main() { .flatten() .cleanup() .groupByKey { it } - .mapGroups { k, iter -> k to iter.asSequence().count() } - .sort { arrayOf(it.col("second").desc()) } + .mapGroups { k, iter -> k X iter.asSequence().count() } + .sort { arrayOf(it(colName = "_2").desc()) } .limit(20) - .map { it.second to it.first } + .map { it.swap() } .show(false) } } -fun Dataset.cleanup() = +fun Dataset.cleanup(): Dataset = filter { it.isNotBlank() } .map { it.trim(',', ' ', '\n', ':', '.', ';', '?', '!', '"', '\'', '\t', ' ') } .filter { !it.endsWith("n’t") } diff --git a/kotlin-spark-api/3.2/pom_2.12.xml b/kotlin-spark-api/3.2/pom_2.12.xml index 826547d2..e07de9d9 100644 --- a/kotlin-spark-api/3.2/pom_2.12.xml +++ b/kotlin-spark-api/3.2/pom_2.12.xml @@ -27,6 +27,10 @@ org.jetbrains.kotlinx.spark core-3.2_${scala.compat.version} + + org.jetbrains.kotlinx.spark + scala-tuples-in-kotlin + @@ -75,6 +79,7 @@ src/test/kotlin target/${scala.compat.version} + org.jetbrains.kotlin kotlin-maven-plugin @@ -93,10 +98,12 @@ + org.apache.maven.plugins maven-surefire-plugin + org.jetbrains.dokka dokka-maven-plugin @@ -121,6 +128,7 @@ + io.qameta.allure allure-maven @@ -128,10 +136,12 @@ ${project.basedir}/allure-results/${scala.compat.version} + org.jacoco jacoco-maven-plugin + diff --git a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Arities.kt b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Arities.kt index 6dcb1666..93371fee 100644 --- a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Arities.kt +++ b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Arities.kt @@ -44,380 +44,811 @@ package org.jetbrains.kotlinx.spark.api import java.io.Serializable +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple1(_1)", "scala.Tuple1")) data class Arity1(val _1: T1): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple2(_1, _2)", "scala.Tuple2")) data class Arity2(val _1: T1, val _2: T2): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple3(_1, _2, _3)", "scala.Tuple3")) data class Arity3(val _1: T1, val _2: T2, val _3: T3): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple4(_1, _2, _3, _4)", "scala.Tuple4")) data class Arity4(val _1: T1, val _2: T2, val _3: T3, val _4: T4): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple5(_1, _2, _3, _4, _5)", "scala.Tuple5")) data class Arity5(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple6(_1, _2, _3, _4, _5, _6)", "scala.Tuple6")) data class Arity6(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple7(_1, _2, _3, _4, _5, _6, _7)", "scala.Tuple7")) data class Arity7(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple8(_1, _2, _3, _4, _5, _6, _7, _8)", "scala.Tuple8")) data class Arity8(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple9(_1, _2, _3, _4, _5, _6, _7, _8, _9)", "scala.Tuple9")) data class Arity9(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)", "scala.Tuple10")) data class Arity10(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11)", "scala.Tuple11")) data class Arity11(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12)", "scala.Tuple12")) data class Arity12(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13)", "scala.Tuple13")) data class Arity13(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14)", "scala.Tuple14")) data class Arity14(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15)", "scala.Tuple15")) data class Arity15(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)", "scala.Tuple16")) data class Arity16(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17)", "scala.Tuple17")) data class Arity17(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18)", "scala.Tuple18")) data class Arity18(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19)", "scala.Tuple19")) data class Arity19(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20)", "scala.Tuple20")) data class Arity20(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)", "scala.Tuple21")) data class Arity21(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21): Serializable + +@Deprecated("Use Scala tuples instead.", ReplaceWith("Tuple22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22)", "scala.Tuple22")) data class Arity22(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21, val _22: T22): Serializable + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") data class Arity23(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21, val _22: T22, val _23: T23): Serializable + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") data class Arity24(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21, val _22: T22, val _23: T23, val _24: T24): Serializable + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") data class Arity25(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21, val _22: T22, val _23: T23, val _24: T24, val _25: T25): Serializable + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") data class Arity26(val _1: T1, val _2: T2, val _3: T3, val _4: T4, val _5: T5, val _6: T6, val _7: T7, val _8: T8, val _9: T9, val _10: T10, val _11: T11, val _12: T12, val _13: T13, val _14: T14, val _15: T15, val _16: T16, val _17: T17, val _18: T18, val _19: T19, val _20: T20, val _21: T21, val _22: T22, val _23: T23, val _24: T24, val _25: T25, val _26: T26): Serializable -fun c(_1: T1) = Arity1(_1) -fun c(_1: T1, _2: T2) = Arity2(_1, _2) -fun c(_1: T1, _2: T2, _3: T3) = Arity3(_1, _2, _3) -fun c(_1: T1, _2: T2, _3: T3, _4: T4) = Arity4(_1, _2, _3, _4) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5) = Arity5(_1, _2, _3, _4, _5) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6) = Arity6(_1, _2, _3, _4, _5, _6) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7) = Arity7(_1, _2, _3, _4, _5, _6, _7) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8) = Arity8(_1, _2, _3, _4, _5, _6, _7, _8) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9) = Arity9(_1, _2, _3, _4, _5, _6, _7, _8, _9) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10) = Arity10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11) = Arity11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12) = Arity12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13) = Arity13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14) = Arity14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15) = Arity15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16) = Arity16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17) = Arity17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18) = Arity18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19) = Arity19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20) = Arity20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21) = Arity21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22) = Arity22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23) = Arity23(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24) = Arity24(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24, _25: T25) = Arity25(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) -fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24, _25: T25, _26: T26) = Arity26(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) + + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1)")) +fun c(_1: T1): Arity1 = Arity1(_1) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2)")) +fun c(_1: T1, _2: T2): Arity2 = Arity2(_1, _2) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3)")) +fun c(_1: T1, _2: T2, _3: T3): Arity3 = Arity3(_1, _2, _3) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4): Arity4 = Arity4(_1, _2, _3, _4) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5): Arity5 = Arity5(_1, _2, _3, _4, _5) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6): Arity6 = Arity6(_1, _2, _3, _4, _5, _6) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7): Arity7 = Arity7(_1, _2, _3, _4, _5, _6, _7) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8): Arity8 = Arity8(_1, _2, _3, _4, _5, _6, _7, _8) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9): Arity9 = Arity9(_1, _2, _3, _4, _5, _6, _7, _8, _9) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10): Arity10 = Arity10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11): Arity11 = Arity11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12): Arity12 = Arity12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13): Arity13 = Arity13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14): Arity14 = Arity14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15): Arity15 = Arity15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16): Arity16 = Arity16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17): Arity17 = Arity17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18): Arity18 = Arity18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19): Arity19 = Arity19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20): Arity20 = Arity20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21): Arity21 = Arity21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) + +@Deprecated("Use Scala tuples instead.", ReplaceWith("t(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22)")) +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22): Arity22 = Arity22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23): Arity23 = Arity23(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23) + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24): Arity24 = Arity24(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24) + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24, _25: T25): Arity25 = Arity25(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25) + +@Deprecated("Use Scala tuples instead. They only reach 22 values.") +fun c(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22, _23: T23, _24: T24, _25: T25, _26: T26): Arity26 = Arity26(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26) + + +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity1) = Arity2(this._1, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity2) = Arity3(this._1, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity1) = Arity3(this._1, this._2, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity3) = Arity4(this._1, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity2) = Arity4(this._1, this._2, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity1) = Arity4(this._1, this._2, this._3, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity4) = Arity5(this._1, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity3) = Arity5(this._1, this._2, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity2) = Arity5(this._1, this._2, this._3, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity1) = Arity5(this._1, this._2, this._3, this._4, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity5) = Arity6(this._1, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity4) = Arity6(this._1, this._2, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity3) = Arity6(this._1, this._2, this._3, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity2) = Arity6(this._1, this._2, this._3, this._4, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity1) = Arity6(this._1, this._2, this._3, this._4, this._5, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity6) = Arity7(this._1, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity5) = Arity7(this._1, this._2, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity4) = Arity7(this._1, this._2, this._3, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity3) = Arity7(this._1, this._2, this._3, this._4, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity2) = Arity7(this._1, this._2, this._3, this._4, this._5, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity1) = Arity7(this._1, this._2, this._3, this._4, this._5, this._6, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity7) = Arity8(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity6) = Arity8(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity5) = Arity8(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity4) = Arity8(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity3) = Arity8(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity2) = Arity8(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity1) = Arity8(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity8) = Arity9(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity7) = Arity9(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity6) = Arity9(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity5) = Arity9(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity4) = Arity9(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity3) = Arity9(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity2) = Arity9(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity1) = Arity9(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity9) = Arity10(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity8) = Arity10(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity7) = Arity10(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity6) = Arity10(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity5) = Arity10(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity4) = Arity10(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity3) = Arity10(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity2) = Arity10(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity1) = Arity10(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity10) = Arity11(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity9) = Arity11(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity8) = Arity11(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity7) = Arity11(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity6) = Arity11(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity5) = Arity11(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity4) = Arity11(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity3) = Arity11(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity2) = Arity11(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity1) = Arity11(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity11) = Arity12(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity10) = Arity12(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity9) = Arity12(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity8) = Arity12(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity7) = Arity12(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity6) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity5) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity4) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity3) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity2) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity1) = Arity12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity12) = Arity13(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity11) = Arity13(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity10) = Arity13(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity9) = Arity13(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity8) = Arity13(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity7) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity6) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity5) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity4) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity3) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity2) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity1) = Arity13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity13) = Arity14(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity12) = Arity14(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity11) = Arity14(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity10) = Arity14(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity9) = Arity14(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity8) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity7) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity6) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity5) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity4) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity3) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity2) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity1) = Arity14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity14) = Arity15(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity13) = Arity15(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity12) = Arity15(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity11) = Arity15(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity10) = Arity15(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity9) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity8) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity7) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity6) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity5) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity4) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity3) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity2) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity1) = Arity15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity15) = Arity16(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity14) = Arity16(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity13) = Arity16(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity12) = Arity16(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity11) = Arity16(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity10) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity9) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity8) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity7) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity6) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity5) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity4) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity3) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity2) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity1) = Arity16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity16) = Arity17(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity15) = Arity17(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity14) = Arity17(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity13) = Arity17(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity12) = Arity17(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity11) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity10) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity9) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity8) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity7) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity6) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity5) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity4) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity3) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity2) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity1) = Arity17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity17) = Arity18(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity16) = Arity18(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity15) = Arity18(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity14) = Arity18(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity13) = Arity18(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity12) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity11) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity10) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity9) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity8) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity7) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity6) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity5) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity4) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity3) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity2) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity1) = Arity18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity18) = Arity19(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity17) = Arity19(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity16) = Arity19(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity15) = Arity19(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity14) = Arity19(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity13) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity12) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity11) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity10) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity9) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity8) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity7) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity6) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity5) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity4) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity3) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity2) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity1) = Arity19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity19) = Arity20(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity18) = Arity20(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity17) = Arity20(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity16) = Arity20(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity15) = Arity20(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity14) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity13) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity12) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity11) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity10) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity9) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity8) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity7) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity6) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity5) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity4) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity3) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity2) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity1) = Arity20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity20) = Arity21(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity19) = Arity21(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity18) = Arity21(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity17) = Arity21(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity16) = Arity21(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity15) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity14) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity13) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity12) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity11) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity10) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity9) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity8) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity7) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity6) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity5) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity4) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity3) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity2) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity1) = Arity21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity21) = Arity22(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity20) = Arity22(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity19) = Arity22(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity18) = Arity22(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity17) = Arity22(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity16) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity15) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity14) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity13) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity12) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity11) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity10) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity9) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity8) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity7) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity6) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity5) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity4) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity3) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity2) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity21.plus(that: Arity1) = Arity22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity22) = Arity23(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity21) = Arity23(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity20) = Arity23(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity19) = Arity23(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity18) = Arity23(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity17) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity16) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity15) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity14) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity13) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity12) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity11) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity10) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity9) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity8) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity7) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity6) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity5) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity4) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity3) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity21.plus(that: Arity2) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity22.plus(that: Arity1) = Arity23(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity23) = Arity24(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity22) = Arity24(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity21) = Arity24(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity20) = Arity24(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity19) = Arity24(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity18) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity17) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity16) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity15) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity14) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity13) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity12) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity11) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity10) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity9) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity8) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity7) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity6) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity5) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity4) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity21.plus(that: Arity3) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity22.plus(that: Arity2) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity23.plus(that: Arity1) = Arity24(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity24) = Arity25(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23, that._24) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity23) = Arity25(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity22) = Arity25(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity21) = Arity25(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity20) = Arity25(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity19) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity18) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity17) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity16) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity15) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity14) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity13) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity12) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity11) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity10) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity9) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity8) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity7) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity6) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity5) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity21.plus(that: Arity4) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity22.plus(that: Arity3) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity23.plus(that: Arity2) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity24.plus(that: Arity1) = Arity25(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, this._24, that._1) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity1.plus(that: Arity25) = Arity26(this._1, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23, that._24, that._25) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity2.plus(that: Arity24) = Arity26(this._1, this._2, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23, that._24) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity3.plus(that: Arity23) = Arity26(this._1, this._2, this._3, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22, that._23) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity4.plus(that: Arity22) = Arity26(this._1, this._2, this._3, this._4, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21, that._22) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity5.plus(that: Arity21) = Arity26(this._1, this._2, this._3, this._4, this._5, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20, that._21) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity6.plus(that: Arity20) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19, that._20) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity7.plus(that: Arity19) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18, that._19) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity8.plus(that: Arity18) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17, that._18) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity9.plus(that: Arity17) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16, that._17) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity10.plus(that: Arity16) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15, that._16) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity11.plus(that: Arity15) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14, that._15) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity12.plus(that: Arity14) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13, that._14) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity13.plus(that: Arity13) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12, that._13) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity14.plus(that: Arity12) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11, that._12) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity15.plus(that: Arity11) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10, that._11) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity16.plus(that: Arity10) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9, that._10) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity17.plus(that: Arity9) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8, that._9) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity18.plus(that: Arity8) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, that._1, that._2, that._3, that._4, that._5, that._6, that._7, that._8) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity19.plus(that: Arity7) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, that._1, that._2, that._3, that._4, that._5, that._6, that._7) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity20.plus(that: Arity6) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, that._1, that._2, that._3, that._4, that._5, that._6) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity21.plus(that: Arity5) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, that._1, that._2, that._3, that._4, that._5) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity22.plus(that: Arity4) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, that._1, that._2, that._3, that._4) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity23.plus(that: Arity3) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, that._1, that._2, that._3) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity24.plus(that: Arity2) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, this._24, that._1, that._2) +@Deprecated("Use Scala tuples instead.") infix operator fun Arity25.plus(that: Arity1) = Arity26(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22, this._23, this._24, this._25, that._1) diff --git a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt index 8b67a1bc..fb6b4d29 100644 --- a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt +++ b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt @@ -167,264 +167,291 @@ fun ScalaConcurrentMap.asKotlinConcurrentMap(): ConcurrentMap JavaConverters.mapAsJavaConcurrentMap(this) -/** - * Returns a new [Tuple2] based on the arguments in the current [Pair]. - */ -fun Pair.toTuple(): Tuple2 = Tuple2(first, second) - /** * Returns a new [Arity2] based on the arguments in the current [Pair]. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("this.toTuple()", "scala.Tuple2")) fun Pair.toArity(): Arity2 = Arity2(first, second) -/** - * Returns a new [Pair] based on the arguments in the current [Tuple2]. - */ -fun Tuple2.toPair(): Pair = Pair(_1(), _2()) - /** * Returns a new [Pair] based on the arguments in the current [Arity2]. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity2.toPair(): Pair = Pair(_1, _2) - -/** - * Returns a new [Tuple3] based on the arguments in the current [Triple]. - */ -fun Triple.toTuple(): Tuple3 = Tuple3(first, second, third) - /** * Returns a new [Arity3] based on the arguments in the current [Triple]. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("this.toTuple()", "scala.Tuple3")) fun Triple.toArity(): Arity3 = Arity3(first, second, third) -/** - * Returns a new [Triple] based on the arguments in the current [Tuple3]. - */ -fun Tuple3.toTriple(): Triple = Triple(_1(), _2(), _3()) - /** * Returns a new [Triple] based on the arguments in the current [Arity3]. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity3.toTriple(): Triple = Triple(_1, _2, _3) /** * Returns a new Arity1 based on this Tuple1. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple1.toArity(): Arity1 = Arity1(this._1()) /** * Returns a new Arity2 based on this Tuple2. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple2.toArity(): Arity2 = Arity2(this._1(), this._2()) /** * Returns a new Arity3 based on this Tuple3. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple3.toArity(): Arity3 = Arity3(this._1(), this._2(), this._3()) /** * Returns a new Arity4 based on this Tuple4. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple4.toArity(): Arity4 = Arity4(this._1(), this._2(), this._3(), this._4()) /** * Returns a new Arity5 based on this Tuple5. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple5.toArity(): Arity5 = Arity5(this._1(), this._2(), this._3(), this._4(), this._5()) /** * Returns a new Arity6 based on this Tuple6. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple6.toArity(): Arity6 = Arity6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) /** * Returns a new Arity7 based on this Tuple7. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple7.toArity(): Arity7 = Arity7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) /** * Returns a new Arity8 based on this Tuple8. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple8.toArity(): Arity8 = Arity8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) /** * Returns a new Arity9 based on this Tuple9. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple9.toArity(): Arity9 = Arity9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) /** * Returns a new Arity10 based on this Tuple10. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple10.toArity(): Arity10 = Arity10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) /** * Returns a new Arity11 based on this Tuple11. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple11.toArity(): Arity11 = Arity11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) /** * Returns a new Arity12 based on this Tuple12. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple12.toArity(): Arity12 = Arity12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) /** * Returns a new Arity13 based on this Tuple13. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple13.toArity(): Arity13 = Arity13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) /** * Returns a new Arity14 based on this Tuple14. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple14.toArity(): Arity14 = Arity14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) /** * Returns a new Arity15 based on this Tuple15. - **/ + **/@Deprecated("Use Scala tuples instead.", ReplaceWith("")) + fun Tuple15.toArity(): Arity15 = Arity15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) /** * Returns a new Arity16 based on this Tuple16. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple16.toArity(): Arity16 = Arity16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) /** * Returns a new Arity17 based on this Tuple17. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple17.toArity(): Arity17 = Arity17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) /** * Returns a new Arity18 based on this Tuple18. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple18.toArity(): Arity18 = Arity18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) /** * Returns a new Arity19 based on this Tuple19. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple19.toArity(): Arity19 = Arity19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) /** * Returns a new Arity20 based on this Tuple20. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple20.toArity(): Arity20 = Arity20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) /** * Returns a new Arity21 based on this Tuple21. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple21.toArity(): Arity21 = Arity21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) /** * Returns a new Arity22 based on this Tuple22. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Tuple22.toArity(): Arity22 = Arity22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) /** * Returns a new Tuple1 based on this Arity1. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity1.toTuple(): Tuple1 = Tuple1(this._1) /** * Returns a new Tuple2 based on this Arity2. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity2.toTuple(): Tuple2 = Tuple2(this._1, this._2) /** * Returns a new Tuple3 based on this Arity3. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity3.toTuple(): Tuple3 = Tuple3(this._1, this._2, this._3) /** * Returns a new Tuple4 based on this Arity4. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity4.toTuple(): Tuple4 = Tuple4(this._1, this._2, this._3, this._4) /** * Returns a new Tuple5 based on this Arity5. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity5.toTuple(): Tuple5 = Tuple5(this._1, this._2, this._3, this._4, this._5) /** * Returns a new Tuple6 based on this Arity6. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity6.toTuple(): Tuple6 = Tuple6(this._1, this._2, this._3, this._4, this._5, this._6) /** * Returns a new Tuple7 based on this Arity7. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity7.toTuple(): Tuple7 = Tuple7(this._1, this._2, this._3, this._4, this._5, this._6, this._7) /** * Returns a new Tuple8 based on this Arity8. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity8.toTuple(): Tuple8 = Tuple8(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8) /** * Returns a new Tuple9 based on this Arity9. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity9.toTuple(): Tuple9 = Tuple9(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9) /** * Returns a new Tuple10 based on this Arity10. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity10.toTuple(): Tuple10 = Tuple10(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10) /** * Returns a new Tuple11 based on this Arity11. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity11.toTuple(): Tuple11 = Tuple11(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11) /** * Returns a new Tuple12 based on this Arity12. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity12.toTuple(): Tuple12 = Tuple12(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12) /** * Returns a new Tuple13 based on this Arity13. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity13.toTuple(): Tuple13 = Tuple13(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13) /** * Returns a new Tuple14 based on this Arity14. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity14.toTuple(): Tuple14 = Tuple14(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14) /** * Returns a new Tuple15 based on this Arity15. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity15.toTuple(): Tuple15 = Tuple15(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15) /** * Returns a new Tuple16 based on this Arity16. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity16.toTuple(): Tuple16 = Tuple16(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16) /** * Returns a new Tuple17 based on this Arity17. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity17.toTuple(): Tuple17 = Tuple17(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17) /** * Returns a new Tuple18 based on this Arity18. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity18.toTuple(): Tuple18 = Tuple18(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18) /** * Returns a new Tuple19 based on this Arity19. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity19.toTuple(): Tuple19 = Tuple19(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19) /** * Returns a new Tuple20 based on this Arity20. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity20.toTuple(): Tuple20 = Tuple20(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20) /** * Returns a new Tuple21 based on this Arity21. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity21.toTuple(): Tuple21 = Tuple21(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21) /** * Returns a new Tuple22 based on this Arity22. **/ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) fun Arity22.toTuple(): Tuple22 = Tuple22(this._1, this._2, this._3, this._4, this._5, this._6, this._7, this._8, this._9, this._10, this._11, this._12, this._13, this._14, this._15, this._16, this._17, this._18, this._19, this._20, this._21, this._22) diff --git a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Dataset.kt b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Dataset.kt index 31227762..9173bf8d 100644 --- a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Dataset.kt +++ b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Dataset.kt @@ -25,6 +25,8 @@ * possible/easier. */ +@file:Suppress("unused") + package org.jetbrains.kotlinx.spark.api import org.apache.spark.api.java.JavaRDDLike @@ -40,6 +42,9 @@ import org.apache.spark.sql.KeyValueGroupedDataset import org.apache.spark.sql.TypedColumn import org.jetbrains.kotlinx.spark.extensions.KSparkExtensions import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 import kotlin.reflect.KProperty1 @@ -144,6 +149,7 @@ inline fun Dataset>.takeKeys(): Dataset = map * Maps the Dataset to only retain the "keys" or [Arity2._1] values. */ @JvmName("takeKeysArity2") +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) inline fun Dataset>.takeKeys(): Dataset = map { it._1 } /** @@ -164,6 +170,7 @@ inline fun Dataset>.takeValues(): Dataset = ma * Maps the Dataset to only retain the "values" or [Arity2._2] values. */ @JvmName("takeValuesArity2") +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) inline fun Dataset>.takeValues(): Dataset = map { it._2 } /** DEPRECATED: Use [as] or [to] for this. */ @@ -250,11 +257,10 @@ fun Dataset.debug(): Dataset = also { KSparkExtensions.debug(it) } * @param right right dataset * @param col join condition * - * @return dataset of pairs where right element is forced nullable + * @return dataset of [Tuple2] where right element is forced nullable */ -inline fun Dataset.leftJoin(right: Dataset, col: Column): Dataset> { - return joinWith(right, col, "left").map { it._1 to it._2 } -} +inline fun Dataset.leftJoin(right: Dataset, col: Column): Dataset> = + joinWith(right, col, "left") /** * Alias for [Dataset.joinWith] which passes "right" argument @@ -264,11 +270,10 @@ inline fun Dataset.leftJoin(right: Dataset, * @param right right dataset * @param col join condition * - * @return dataset of [Pair] where left element is forced nullable + * @return dataset of [Tuple2] where left element is forced nullable */ -inline fun Dataset.rightJoin(right: Dataset, col: Column): Dataset> { - return joinWith(right, col, "right").map { it._1 to it._2 } -} +inline fun Dataset.rightJoin(right: Dataset, col: Column): Dataset> = + joinWith(right, col, "right") /** * Alias for [Dataset.joinWith] which passes "inner" argument @@ -277,11 +282,10 @@ inline fun Dataset.rightJoin(right: Dataset, * @param right right dataset * @param col join condition * - * @return resulting dataset of [Pair] + * @return resulting dataset of [Tuple2] */ -inline fun Dataset.innerJoin(right: Dataset, col: Column): Dataset> { - return joinWith(right, col, "inner").map { it._1 to it._2 } -} +inline fun Dataset.innerJoin(right: Dataset, col: Column): Dataset> = + joinWith(right, col, "inner") /** * Alias for [Dataset.joinWith] which passes "full" argument @@ -291,14 +295,12 @@ inline fun Dataset.innerJoin(right: Dataset, col: C * @param right right dataset * @param col join condition * - * @return dataset of [Pair] where both elements are forced nullable + * @return dataset of [Tuple2] where both elements are forced nullable */ inline fun Dataset.fullJoin( right: Dataset, col: Column, -): Dataset> { - return joinWith(right, col, "full").map { it._1 to it._2 } -} +): Dataset> = joinWith(right, col, "full") /** * Alias for [Dataset.sort] which forces user to provide sorted columns from the source dataset @@ -318,10 +320,12 @@ fun Dataset>.sortByKey(): Dataset> = sort fun Dataset>.sortByValue(): Dataset> = sort("_2") /** Returns a dataset sorted by the first (`_1`) value of each [Arity2] inside. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) @JvmName("sortByArity2Key") fun Dataset>.sortByKey(): Dataset> = sort("_1") /** Returns a dataset sorted by the second (`_2`) value of each [Arity2] inside. */ +@Deprecated("Use Scala tuples instead.", ReplaceWith("")) @JvmName("sortByArity2Value") fun Dataset>.sortByValue(): Dataset> = sort("_2") @@ -400,11 +404,11 @@ inline fun Dataset.selectTyped( inline fun Dataset.selectTyped( c1: TypedColumn, c2: TypedColumn, -): Dataset> = +): Dataset> = select( c1 as TypedColumn, c2 as TypedColumn, - ).map { Pair(it._1(), it._2()) } + ) /** * Returns a new Dataset by computing the given [Column] expressions for each element. @@ -414,12 +418,12 @@ inline fun Dataset.selectType c1: TypedColumn, c2: TypedColumn, c3: TypedColumn, -): Dataset> = +): Dataset> = select( c1 as TypedColumn, c2 as TypedColumn, c3 as TypedColumn, - ).map { Triple(it._1(), it._2(), it._3()) } + ) /** * Returns a new Dataset by computing the given [Column] expressions for each element. @@ -430,13 +434,13 @@ inline fun Dataset, c3: TypedColumn, c4: TypedColumn, -): Dataset> = +): Dataset> = select( c1 as TypedColumn, c2 as TypedColumn, c3 as TypedColumn, c4 as TypedColumn, - ).map { Arity4(it._1(), it._2(), it._3(), it._4()) } + ) /** * Returns a new Dataset by computing the given [Column] expressions for each element. @@ -448,12 +452,12 @@ inline fun , c4: TypedColumn, c5: TypedColumn, -): Dataset> = +): Dataset> = select( c1 as TypedColumn, c2 as TypedColumn, c3 as TypedColumn, c4 as TypedColumn, c5 as TypedColumn, - ).map { Arity5(it._1(), it._2(), it._3(), it._4(), it._5()) } + ) diff --git a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/KeyValueGroupedDataset.kt b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/KeyValueGroupedDataset.kt index 81b7c0bf..ec840dbe 100644 --- a/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/KeyValueGroupedDataset.kt +++ b/kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/KeyValueGroupedDataset.kt @@ -38,6 +38,7 @@ import org.apache.spark.sql.KeyValueGroupedDataset import org.apache.spark.sql.streaming.GroupState import org.apache.spark.sql.streaming.GroupStateTimeout import org.apache.spark.sql.streaming.OutputMode +import scala.Tuple2 /** @@ -79,9 +80,8 @@ inline fun KeyValueGroupedDataset.mapGroups( * Note that you need to use [reduceGroupsK] always instead of the Java- or Scala-specific * [KeyValueGroupedDataset.reduceGroups] to make the compiler work. */ -inline fun KeyValueGroupedDataset.reduceGroupsK(noinline func: (VALUE, VALUE) -> VALUE): Dataset> = +inline fun KeyValueGroupedDataset.reduceGroupsK(noinline func: (VALUE, VALUE) -> VALUE): Dataset> = reduceGroups(ReduceFunction(func)) - .map { t -> t._1() to t._2() } /** * (Kotlin-specific) diff --git a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/DatasetFunctionTest.kt b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/DatasetFunctionTest.kt index 495948e3..26dcceaf 100644 --- a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/DatasetFunctionTest.kt +++ b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/DatasetFunctionTest.kt @@ -1,3 +1,22 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ package org.jetbrains.kotlinx.spark.api import ch.tutteli.atrium.api.fluent.en_GB.* @@ -12,8 +31,11 @@ import org.apache.spark.sql.Dataset import org.apache.spark.sql.functions import org.apache.spark.sql.streaming.GroupState import org.apache.spark.sql.streaming.GroupStateTimeout +import org.jetbrains.kotlinx.spark.api.tuples.* import scala.Tuple2 import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 import java.io.Serializable class DatasetFunctionTest : ShouldSpec({ @@ -23,23 +45,25 @@ class DatasetFunctionTest : ShouldSpec({ should("handle cached operations") { val result = dsOf(1, 2, 3, 4, 5) - .map { it to (it + 2) } + .map { it X (it + 2) } .withCached { expect(collectAsList()).contains.inAnyOrder.only.values( - 1 to 3, - 2 to 4, - 3 to 5, - 4 to 6, - 5 to 7 + 1 X 3, + 2 X 4, + 3 X 5, + 4 X 6, + 5 X 7, ) - val next = filter { it.first % 2 == 0 } - expect(next.collectAsList()).contains.inAnyOrder.only.values(2 to 4, 4 to 6) + val next = filter { it._1 % 2 == 0 } + expect(next.collectAsList()).contains.inAnyOrder.only.values(2 X 4, 4 X 6) next } - .map { c(it.first, it.second, (it.first + it.second) * 2) } + .map { it: Tuple2 -> + it + (it._1 + it._2) * 2 + } .collectAsList() - expect(result).contains.inOrder.only.values(c(2, 4, 12), c(4, 6, 20)) + expect(result).contains.inOrder.only.values(2 X 4 X 12, 4 X 6 X 20) } should("handle join operations") { @@ -50,10 +74,10 @@ class DatasetFunctionTest : ShouldSpec({ val first = dsOf(Left(1, "a"), Left(2, "b")) val second = dsOf(Right(1, 100), Right(3, 300)) val result = first - .leftJoin(second, first.col("id").eq(second.col("id"))) - .map { c(it.first.id, it.first.name, it.second?.value) } + .leftJoin(second, first.col("id") eq second.col("id")) + .map { it._1.id X it._1.name X it._2?.value } .collectAsList() - expect(result).contains.inOrder.only.values(c(1, "a", 100), c(2, "b", null)) + expect(result).contains.inOrder.only.values(t(1, "a", 100), t(2, "b", null)) } should("handle map operations") { @@ -102,16 +126,16 @@ class DatasetFunctionTest : ShouldSpec({ } should("Have Kotlin ready functions in place of overload ambiguity") { - val dataset: Pair = dsOf( + val dataset: Tuple2 = dsOf( SomeClass(intArrayOf(1, 2, 3), 1), SomeClass(intArrayOf(4, 3, 2), 1), ) .groupByKey { it: SomeClass -> it.b } .reduceGroupsK { v1: SomeClass, v2: SomeClass -> v1 } - .filter { it: Pair -> true } // not sure why this does work, but reduce doesn't - .reduceK { v1: Pair, v2: Pair -> v1 } + .filter { it: Tuple2 -> true } // not sure why this does work, but reduce doesn't + .reduceK { v1: Tuple2, v2: Tuple2 -> v1 } - dataset.second.a shouldBe intArrayOf(1, 2, 3) + dataset._2.a shouldBe intArrayOf(1, 2, 3) } } } @@ -120,24 +144,24 @@ class DatasetFunctionTest : ShouldSpec({ withSpark(props = mapOf("spark.sql.codegen.comments" to true)) { should("perform flat map on grouped datasets") { - val groupedDataset = listOf(1 to "a", 1 to "b", 2 to "c") + val groupedDataset = listOf(t(1, "a"), t(1, "b"), t(2, "c")) .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } val flatMapped = groupedDataset.flatMapGroups { key, values -> val collected = values.asSequence().toList() if (collected.size > 1) collected.iterator() - else emptyList>().iterator() + else emptyList>().iterator() } flatMapped.count() shouldBe 2 } should("perform map group with state and timeout conf on grouped datasets") { - val groupedDataset = listOf(1 to "a", 1 to "b", 2 to "c") + val groupedDataset = listOf(t(1, "a"), t(1, "b"), t(2, "c")) .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } val mappedWithStateTimeoutConf = groupedDataset.mapGroupsWithState(GroupStateTimeout.NoTimeout()) { key, values, state: GroupState -> @@ -147,16 +171,16 @@ class DatasetFunctionTest : ShouldSpec({ s = key s shouldBe key - s!! to collected.map { it.second } + s!! X collected.map { it._2 } } mappedWithStateTimeoutConf.count() shouldBe 2 } should("perform map group with state on grouped datasets") { - val groupedDataset = listOf(1 to "a", 1 to "b", 2 to "c") + val groupedDataset = listOf(t(1, "a"), t(1, "b"), t(2, "c")) .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } val mappedWithState = groupedDataset.mapGroupsWithState { key, values, state: GroupState -> var s by state @@ -165,16 +189,16 @@ class DatasetFunctionTest : ShouldSpec({ s = key s shouldBe key - s!! to collected.map { it.second } + s!! X collected.map { it._2 } } mappedWithState.count() shouldBe 2 } should("perform flat map group with state on grouped datasets") { - val groupedDataset = listOf(1 to "a", 1 to "b", 2 to "c") + val groupedDataset = listOf(t(1, "a"), t(1, "b"), t(2, "c")) .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } val flatMappedWithState = groupedDataset.mapGroupsWithState { key, values, state: GroupState -> var s by state @@ -184,26 +208,24 @@ class DatasetFunctionTest : ShouldSpec({ s shouldBe key if (collected.size > 1) collected.iterator() - else emptyList>().iterator() + else emptyList>().iterator() } flatMappedWithState.count() shouldBe 2 } should("be able to cogroup grouped datasets") { - val groupedDataset1 = listOf(1 to "a", 1 to "b", 2 to "c") + val groupedDataset1 = listOf(1 X "a", 1 X "b", 2 X "c") .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } - val groupedDataset2 = listOf(1 to "d", 5 to "e", 3 to "f") + val groupedDataset2 = listOf(1 X "d", 5 X "e", 3 X "f") .toDS() - .groupByKey { it.first } + .groupByKey { it._1 } val cogrouped = groupedDataset1.cogroup(groupedDataset2) { key, left, right -> listOf( - key to (left.asSequence() + right.asSequence()) - .map { it.second } - .toList() + key to (left.asSequence() + right.asSequence()).map { it._2 }.toList() ).iterator() } @@ -246,11 +268,11 @@ class DatasetFunctionTest : ShouldSpec({ should("Convert JavaPairRDD to Dataset") { val rdd3: JavaPairRDD = sc.parallelizePairs( - listOf(Tuple2(1, 1.0), Tuple2(2, 2.0), Tuple2(3, 3.0)) + listOf(t(1, 1.0), t(2, 2.0), t(3, 3.0)) ) val dataset3: Dataset> = rdd3.toDS() - dataset3.toList>() shouldBe listOf(Tuple2(1, 1.0), Tuple2(2, 2.0), Tuple2(3, 3.0)) + dataset3.toList>() shouldBe listOf(t(1, 1.0), t(2, 2.0), t(3, 3.0)) } should("Convert Kotlin Serializable data class RDD to Dataset") { @@ -265,13 +287,13 @@ class DatasetFunctionTest : ShouldSpec({ } } - should("Convert Arity RDD to Dataset") { + should("Convert Tuple RDD to Dataset") { val rdd5 = sc.parallelize( - listOf(c(1.0, 4)) + listOf(t(1.0, 4)) ) val dataset5 = rdd5.toDS() - dataset5.toList>() shouldBe listOf(c(1.0, 4)) + dataset5.toList>() shouldBe listOf(t(1.0, 4)) } should("Convert List RDD to Dataset") { @@ -283,23 +305,11 @@ class DatasetFunctionTest : ShouldSpec({ dataset6.toList>() shouldBe listOf(listOf(1, 2, 3), listOf(4, 5, 6)) } - should("Sort Arity2 Dataset") { - val list = listOf( - c(1, 6), - c(2, 5), - c(3, 4), - ) - val dataset = list.toDS() - - dataset.sortByKey().collectAsList() shouldBe list.sortedBy { it._1 } - dataset.sortByValue().collectAsList() shouldBe list.sortedBy { it._2 } - } - should("Sort Tuple2 Dataset") { val list = listOf( - Tuple2(1, 6), - Tuple2(2, 5), - Tuple2(3, 4), + t(1, 6), + t(2, 5), + t(3, 4), ) val dataset = list.toDS() @@ -336,20 +346,20 @@ class DatasetFunctionTest : ShouldSpec({ ) newDS1WithAs.collectAsList() - val newDS2: Dataset> = dataset.selectTyped( + val newDS2: Dataset> = dataset.selectTyped( col(SomeClass::a), // NOTE: this only works on 3.0, returning a data class with an array in it col(SomeClass::b), ) newDS2.collectAsList() - val newDS3: Dataset> = dataset.selectTyped( + val newDS3: Dataset> = dataset.selectTyped( col(SomeClass::a), col(SomeClass::b), col(SomeClass::b), ) newDS3.collectAsList() - val newDS4: Dataset> = dataset.selectTyped( + val newDS4: Dataset> = dataset.selectTyped( col(SomeClass::a), col(SomeClass::b), col(SomeClass::b), @@ -357,7 +367,7 @@ class DatasetFunctionTest : ShouldSpec({ ) newDS4.collectAsList() - val newDS5: Dataset> = dataset.selectTyped( + val newDS5: Dataset> = dataset.selectTyped( col(SomeClass::a), col(SomeClass::b), col(SomeClass::b), diff --git a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/EncodingTest.kt b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/EncodingTest.kt index 9d37194a..e053e05b 100644 --- a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/EncodingTest.kt +++ b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/EncodingTest.kt @@ -26,6 +26,7 @@ import io.kotest.matchers.shouldBe import org.apache.spark.sql.Dataset import org.apache.spark.sql.types.Decimal import org.apache.spark.unsafe.types.CalendarInterval +import org.jetbrains.kotlinx.spark.api.tuples.* import scala.Product import scala.Tuple1 import scala.Tuple2 @@ -124,7 +125,7 @@ class EncodingTest : ShouldSpec({ } should("be able to serialize binary") { - val byteArrayTriple = c("Hello there".encodeToByteArray(), 1, intArrayOf(1, 2, 3)) + val byteArrayTriple = t("Hello there".encodeToByteArray(), 1, intArrayOf(1, 2, 3)) val dataset = dsOf(byteArrayTriple) val (a, b, c) = dataset.collectAsList().single() @@ -134,13 +135,13 @@ class EncodingTest : ShouldSpec({ } should("be able to serialize Decimal") { - val decimalPair = c(Decimal().set(50), 12) + val decimalPair = t(Decimal().set(50), 12) val dataset = dsOf(decimalPair) dataset.collectAsList() shouldBe listOf(decimalPair) } should("be able to serialize BigDecimal") { - val decimalPair = c(BigDecimal.TEN, 12) + val decimalPair = t(BigDecimal.TEN, 12) val dataset = dsOf(decimalPair) val (a, b) = dataset.collectAsList().single() a.compareTo(BigDecimal.TEN) shouldBe 0 @@ -155,23 +156,23 @@ class EncodingTest : ShouldSpec({ should("Be able to serialize Scala Tuples including data classes") { val dataset = dsOf( - Tuple2("a", Tuple3("a", 1, LonLat(1.0, 1.0))), - Tuple2("b", Tuple3("b", 2, LonLat(1.0, 2.0))), + t("a", t("a", 1, LonLat(1.0, 1.0))), + t("b", t("b", 2, LonLat(1.0, 2.0))), ) dataset.show() val asList = dataset.takeAsList(2) - asList.first() shouldBe Tuple2("a", Tuple3("a", 1, LonLat(1.0, 1.0))) + asList.first() shouldBe t("a", t("a", 1, LonLat(1.0, 1.0))) } should("Be able to serialize data classes with tuples") { val dataset = dsOf( - DataClassWithTuple(Tuple3(5L, "test", Tuple1(""))), - DataClassWithTuple(Tuple3(6L, "tessst", Tuple1(""))), + DataClassWithTuple(t(5L, "test", t(""))), + DataClassWithTuple(t(6L, "tessst", t(""))), ) dataset.show() val asList = dataset.takeAsList(2) - asList.first().tuple shouldBe Tuple3(5L, "test", Tuple1("")) + asList.first().tuple shouldBe t(5L, "test", t("")) } } } @@ -187,15 +188,15 @@ class EncodingTest : ShouldSpec({ } should("contain all generic primitives with complex schema") { - val primitives = c(1, 1.0, 1.toFloat(), 1.toByte(), LocalDate.now(), true) - val primitives2 = c(2, 2.0, 2.toFloat(), 2.toByte(), LocalDate.now().plusDays(1), false) + val primitives = t(1, 1.0, 1.toFloat(), 1.toByte(), LocalDate.now(), true) + val primitives2 = t(2, 2.0, 2.toFloat(), 2.toByte(), LocalDate.now().plusDays(1), false) val tuples = dsOf(primitives, primitives2).collectAsList() expect(tuples).contains.inAnyOrder.only.values(primitives, primitives2) } should("contain all generic primitives with complex nullable schema") { - val primitives = c(1, 1.0, 1.toFloat(), 1.toByte(), LocalDate.now(), true) - val nulls = c(null, null, null, null, null, null) + val primitives = t(1, 1.0, 1.toFloat(), 1.toByte(), LocalDate.now(), true) + val nulls = t(null, null, null, null, null, null) val tuples = dsOf(primitives, nulls).collectAsList() expect(tuples).contains.inAnyOrder.only.values(primitives, nulls) } diff --git a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/UDFRegisterTest.kt b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/UDFRegisterTest.kt index 1926be42..df3525ef 100644 --- a/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/UDFRegisterTest.kt +++ b/kotlin-spark-api/3.2/src/test/kotlin/org/jetbrains/kotlinx/spark/api/UDFRegisterTest.kt @@ -124,8 +124,8 @@ class UDFRegisterTest : ShouldSpec({ should("succeed in dataset") { val dataset: Dataset = listOf( - NormalClass(name="a", age =10), - NormalClass(name="b", age =20) + NormalClass(name = "a", age = 10), + NormalClass(name = "b", age = 20) ).toDS() val udfWrapper = udf.register("nameConcatAge") { name, age -> @@ -150,7 +150,7 @@ class UDFRegisterTest : ShouldSpec({ should("return NormalClass") { listOf("a" to 1, "b" to 2).toDS().toDF().createOrReplaceTempView("test2") udf.register("toNormalClass") { a, b -> - NormalClass(b, a) + NormalClass(b, a) } spark.sql("select toNormalClass(first, second) from test2").show() } @@ -160,6 +160,7 @@ class UDFRegisterTest : ShouldSpec({ } }) + data class NormalClass( val age: Int, val name: String diff --git a/pom_2.12.xml b/pom_2.12.xml index 87e64994..29b854c1 100644 --- a/pom_2.12.xml +++ b/pom_2.12.xml @@ -20,6 +20,7 @@ core/3.2/pom_2.12.xml + scala-tuples-in-kotlin/pom_2.12.xml kotlin-spark-api/3.2/pom_2.12.xml examples/pom-3.2_2.12.xml @@ -31,6 +32,11 @@ core-3.2_${scala.compat.version} ${project.version} + + org.jetbrains.kotlinx.spark + scala-tuples-in-kotlin + ${project.version} + diff --git a/qodana.yaml b/qodana.yaml new file mode 100644 index 00000000..ff38d36f --- /dev/null +++ b/qodana.yaml @@ -0,0 +1,9 @@ +version: "1.0" +linter: jetbrains/qodana-jvm-community:2021.3 +profile: + name: qodana.recommended +exclude: + - name: All + paths: + - scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples + - kotlin-spark-api/3.2/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Arities.kt diff --git a/scala-tuples-in-kotlin/pom_2.12.xml b/scala-tuples-in-kotlin/pom_2.12.xml new file mode 100644 index 00000000..c06aa7ee --- /dev/null +++ b/scala-tuples-in-kotlin/pom_2.12.xml @@ -0,0 +1,159 @@ + + + 4.0.0 + + Kotlin Spark API: Scala Tuples in Kotlin + Scala Tuple helper functions for kotlin + scala-tuples-in-kotlin + + org.jetbrains.kotlinx.spark + kotlin-spark-api-parent_2.12 + 1.0.4-SNAPSHOT + ../pom_2.12.xml + + + + + org.scala-lang + scala-library + ${scala.version} + + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + + + io.kotest + kotest-runner-junit5-jvm + ${kotest.version} + test + + + io.kotest.extensions + kotest-extensions-allure + ${kotest-extension-allure.version} + test + + + com.beust + klaxon + ${klaxon.version} + test + + + ch.tutteli.atrium + atrium-fluent-en_GB + ${atrium.version} + test + + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + test + + + + + src/main/kotlin + src/test/kotlin + target/${scala.compat.version} + + + + org.jetbrains.dokka + dokka-maven-plugin + ${dokka.version} + + 8 + + + + dokka + + dokka + + pre-site + + + javadocjar + + javadocJar + + pre-integration-test + + + + + + org.jetbrains.kotlin + kotlin-maven-plugin + ${kotlin.version} + + + compile + compile + + compile + + + + test-compile + test-compile + + test-compile + + + + + 1.8 + + + + + org.apache.maven.plugins + maven-assembly-plugin + ${maven-assembly-plugin.version} + + + jar-with-dependencies + + + + org.jetbrains.spark.api.examples.WordCountKt + + + + + + + org.apache.maven.plugins + maven-site-plugin + + true + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + + true + + + + + + diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt new file mode 100644 index 00000000..ce4f7e83 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/Conversions.kt @@ -0,0 +1,51 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.0+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2021 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ + +/** + * This files contains conversions of Tuples between the Scala- + * and Kotlin/Java variants. + */ + +@file:Suppress("NOTHING_TO_INLINE", "RemoveExplicitTypeArguments", "unused") + +package org.jetbrains.kotlinx.spark.api + +import scala.* + + +/** + * Returns a new [Tuple2] based on the arguments in the current [Pair]. + */ +fun Pair.toTuple(): Tuple2 = Tuple2(first, second) + +/** + * Returns a new [Pair] based on the arguments in the current [Tuple2]. + */ +fun Tuple2.toPair(): Pair = Pair(_1(), _2()) + +/** + * Returns a new [Tuple3] based on the arguments in the current [Triple]. + */ +fun Triple.toTuple(): Tuple3 = Tuple3(first, second, third) + +/** + * Returns a new [Triple] based on the arguments in the current [Tuple3]. + */ +fun Tuple3.toTriple(): Triple = Triple(_1(), _2(), _3()) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DestructuredTupleBuilders.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DestructuredTupleBuilders.kt new file mode 100644 index 00000000..a212e3aa --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DestructuredTupleBuilders.kt @@ -0,0 +1,83 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("RemoveExplicitTypeArguments", "FunctionName") + +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 +import scala.Tuple6 +import scala.Tuple7 +import scala.Tuple8 +import scala.Tuple9 +import scala.Tuple10 +import scala.Tuple11 +import scala.Tuple12 +import scala.Tuple13 +import scala.Tuple14 +import scala.Tuple15 +import scala.Tuple16 +import scala.Tuple17 +import scala.Tuple18 +import scala.Tuple19 +import scala.Tuple20 +import scala.Tuple21 +import scala.Tuple22 + +/** + * This file provides a descriptive way to create Tuples using [X]. + * Only use [X] to create new Tuples. + * To create Tuples of Tuples, it's recommended to use [t] or [tupleOf] instead as using [X] can lead + * to unexpected results. + * + * For instance: + * ```val yourTuple = 1 X "test" X a``` + * + */ + +/** + * Returns a new Tuple2 of the given arguments. + * @see tupleOf + * @see t + **/ +infix fun T1.X(other: T2): Tuple2 = Tuple2(this, other) + +infix fun Tuple2.X(next: T3): Tuple3 = Tuple3(this._1(), this._2(), next) +infix fun Tuple3.X(next: T4): Tuple4 = Tuple4(this._1(), this._2(), this._3(), next) +infix fun Tuple4.X(next: T5): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), next) +infix fun Tuple5.X(next: T6): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), next) +infix fun Tuple6.X(next: T7): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), next) +infix fun Tuple7.X(next: T8): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), next) +infix fun Tuple8.X(next: T9): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), next) +infix fun Tuple9.X(next: T10): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), next) +infix fun Tuple10.X(next: T11): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), next) +infix fun Tuple11.X(next: T12): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), next) +infix fun Tuple12.X(next: T13): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), next) +infix fun Tuple13.X(next: T14): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), next) +infix fun Tuple14.X(next: T15): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), next) +infix fun Tuple15.X(next: T16): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), next) +infix fun Tuple16.X(next: T17): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), next) +infix fun Tuple17.X(next: T18): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), next) +infix fun Tuple18.X(next: T19): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), next) +infix fun Tuple19.X(next: T20): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), next) +infix fun Tuple20.X(next: T21): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), next) +infix fun Tuple21.X(next: T22): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), next) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DropFunctions.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DropFunctions.kt new file mode 100644 index 00000000..f264245f --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/DropFunctions.kt @@ -0,0 +1,99 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Tuple1 +import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 +import scala.Tuple6 +import scala.Tuple7 +import scala.Tuple8 +import scala.Tuple9 +import scala.Tuple10 +import scala.Tuple11 +import scala.Tuple12 +import scala.Tuple13 +import scala.Tuple14 +import scala.Tuple15 +import scala.Tuple16 +import scala.Tuple17 +import scala.Tuple18 +import scala.Tuple19 +import scala.Tuple20 +import scala.Tuple21 +import scala.Tuple22 + +/** + * This file contains functions to lower the amount of dimensions of tuples. + * This can be done using [dropFirst] and [dropLast]. + * + * For example: + * ```kotlin + * val yourTuple: Tuple2 = tupleOf(1, "test", a).dropLast() + * ``` + * + */ + +fun Tuple1<*>.dropFirst(): EmptyTuple = EmptyTuple +fun Tuple1<*>.dropLast(): EmptyTuple = EmptyTuple +fun Tuple2<*, T1>.dropFirst(): Tuple1 = Tuple1(this._2()) +fun Tuple2.dropLast(): Tuple1 = Tuple1(this._1()) +fun Tuple3<*, T1, T2>.dropFirst(): Tuple2 = Tuple2(this._2(), this._3()) +fun Tuple3.dropLast(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple4<*, T1, T2, T3>.dropFirst(): Tuple3 = Tuple3(this._2(), this._3(), this._4()) +fun Tuple4.dropLast(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple5<*, T1, T2, T3, T4>.dropFirst(): Tuple4 = Tuple4(this._2(), this._3(), this._4(), this._5()) +fun Tuple5.dropLast(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple6<*, T1, T2, T3, T4, T5>.dropFirst(): Tuple5 = Tuple5(this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6.dropLast(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple7<*, T1, T2, T3, T4, T5, T6>.dropFirst(): Tuple6 = Tuple6(this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7.dropLast(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple8<*, T1, T2, T3, T4, T5, T6, T7>.dropFirst(): Tuple7 = Tuple7(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8.dropLast(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple9<*, T1, T2, T3, T4, T5, T6, T7, T8>.dropFirst(): Tuple8 = Tuple8(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9.dropLast(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple10<*, T1, T2, T3, T4, T5, T6, T7, T8, T9>.dropFirst(): Tuple9 = Tuple9(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10.dropLast(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple11<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>.dropFirst(): Tuple10 = Tuple10(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11.dropLast(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple12<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.dropFirst(): Tuple11 = Tuple11(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12.dropLast(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple13<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.dropFirst(): Tuple12 = Tuple12(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13.dropLast(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple14<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.dropFirst(): Tuple13 = Tuple13(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14.dropLast(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple15<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.dropFirst(): Tuple14 = Tuple14(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15.dropLast(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple16<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.dropFirst(): Tuple15 = Tuple15(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16.dropLast(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple17<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.dropFirst(): Tuple16 = Tuple16(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17.dropLast(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple18<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.dropFirst(): Tuple17 = Tuple17(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18.dropLast(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple19<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.dropFirst(): Tuple18 = Tuple18(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19.dropLast(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple20<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.dropFirst(): Tuple19 = Tuple19(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20.dropLast(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple21<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.dropFirst(): Tuple20 = Tuple20(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21.dropLast(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple22<*, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.dropFirst(): Tuple21 = Tuple21(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22.dropLast(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/EmptyTuple.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/EmptyTuple.kt new file mode 100644 index 00000000..0420c8b7 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/EmptyTuple.kt @@ -0,0 +1,37 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* +import java.io.Serializable + +/** + * Just as in Scala3, we provide the [EmptyTuple]. It is the result of dropping the last item from a [Tuple1] + * or when calling `tupleOf()` for instance. + */ + +object EmptyTuple : Product, Serializable { + override fun canEqual(that: Any?): Boolean = that == EmptyTuple + override fun productElement(n: Int): Nothing = throw IndexOutOfBoundsException("EmptyTuple has no members") + override fun productArity(): Int = 0 + override fun toString(): String = "()" +} + +public fun emptyTuple(): EmptyTuple = EmptyTuple diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/MapTuples.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/MapTuples.kt new file mode 100644 index 00000000..164ac92a --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/MapTuples.kt @@ -0,0 +1,87 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +/** + * This file provides map-functions to all Tuple variants. + * Given a tuple `t(a1, ..., an)`, returns a new tuple `t(func(a1), ..., func(an))`. + * Compared to Scala 3, no type mapping can occur in Kotlin, so to create a `TupleX` + * the user will need to explicitly [cast] the result. + * + * For example: + * ```kotlin + * val myTuple: Tuple4 = t(1, "3", 2, "4") + * val myStringTuple: Tuple4 = myTuple.map { + * when (it) { + * is Int -> it.toString() + * is String -> it.toInt() + * else -> error("") + * } + * }.cast() + * ``` + */ + +fun Tuple1.map(func: (T) -> R): Tuple1 = Tuple1(func(this._1())) +fun Tuple2.map(func: (T) -> R): Tuple2 = Tuple2(func(this._1()), func(this._2())) +fun Tuple3.map(func: (T) -> R): Tuple3 = Tuple3(func(this._1()), func(this._2()), func(this._3())) +fun Tuple4.map(func: (T) -> R): Tuple4 = Tuple4(func(this._1()), func(this._2()), func(this._3()), func(this._4())) +fun Tuple5.map(func: (T) -> R): Tuple5 = Tuple5(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5())) +fun Tuple6.map(func: (T) -> R): Tuple6 = Tuple6(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6())) +fun Tuple7.map(func: (T) -> R): Tuple7 = Tuple7(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7())) +fun Tuple8.map(func: (T) -> R): Tuple8 = Tuple8(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8())) +fun Tuple9.map(func: (T) -> R): Tuple9 = Tuple9(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9())) +fun Tuple10.map(func: (T) -> R): Tuple10 = Tuple10(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10())) +fun Tuple11.map(func: (T) -> R): Tuple11 = Tuple11(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11())) +fun Tuple12.map(func: (T) -> R): Tuple12 = Tuple12(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12())) +fun Tuple13.map(func: (T) -> R): Tuple13 = Tuple13(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13())) +fun Tuple14.map(func: (T) -> R): Tuple14 = Tuple14(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14())) +fun Tuple15.map(func: (T) -> R): Tuple15 = Tuple15(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15())) +fun Tuple16.map(func: (T) -> R): Tuple16 = Tuple16(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16())) +fun Tuple17.map(func: (T) -> R): Tuple17 = Tuple17(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17())) +fun Tuple18.map(func: (T) -> R): Tuple18 = Tuple18(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17()), func(this._18())) +fun Tuple19.map(func: (T) -> R): Tuple19 = Tuple19(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17()), func(this._18()), func(this._19())) +fun Tuple20.map(func: (T) -> R): Tuple20 = Tuple20(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17()), func(this._18()), func(this._19()), func(this._20())) +fun Tuple21.map(func: (T) -> R): Tuple21 = Tuple21(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17()), func(this._18()), func(this._19()), func(this._20()), func(this._21())) +fun Tuple22.map(func: (T) -> R): Tuple22 = Tuple22(func(this._1()), func(this._2()), func(this._3()), func(this._4()), func(this._5()), func(this._6()), func(this._7()), func(this._8()), func(this._9()), func(this._10()), func(this._11()), func(this._12()), func(this._13()), func(this._14()), func(this._15()), func(this._16()), func(this._17()), func(this._18()), func(this._19()), func(this._20()), func(this._21()), func(this._22())) + +inline fun Tuple1<*>.cast(): Tuple1 = Tuple1(this._1() as T1) +inline fun Tuple2<*, *>.cast(): Tuple2 = Tuple2(this._1() as T1, this._2() as T2) +inline fun Tuple3<*, *, *>.cast(): Tuple3 = Tuple3(this._1() as T1, this._2() as T2, this._3() as T3) +inline fun Tuple4<*, *, *, *>.cast(): Tuple4 = Tuple4(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4) +inline fun Tuple5<*, *, *, *, *>.cast(): Tuple5 = Tuple5(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5) +inline fun Tuple6<*, *, *, *, *, *>.cast(): Tuple6 = Tuple6(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6) +inline fun Tuple7<*, *, *, *, *, *, *>.cast(): Tuple7 = Tuple7(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7) +inline fun Tuple8<*, *, *, *, *, *, *, *>.cast(): Tuple8 = Tuple8(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8) +inline fun Tuple9<*, *, *, *, *, *, *, *, *>.cast(): Tuple9 = Tuple9(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9) +inline fun Tuple10<*, *, *, *, *, *, *, *, *, *>.cast(): Tuple10 = Tuple10(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10) +inline fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple11 = Tuple11(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11) +inline fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple12 = Tuple12(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12) +inline fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple13 = Tuple13(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13) +inline fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple14 = Tuple14(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14) +inline fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple15 = Tuple15(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15) +inline fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple16 = Tuple16(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16) +inline fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple17 = Tuple17(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17) +inline fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple18 = Tuple18(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17, this._18() as T18) +inline fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple19 = Tuple19(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17, this._18() as T18, this._19() as T19) +inline fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple20 = Tuple20(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17, this._18() as T18, this._19() as T19, this._20() as T20) +inline fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple21 = Tuple21(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17, this._18() as T18, this._19() as T19, this._20() as T20, this._21() as T21) +inline fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.cast(): Tuple22 = Tuple22(this._1() as T1, this._2() as T2, this._3() as T3, this._4() as T4, this._5() as T5, this._6() as T6, this._7() as T7, this._8() as T8, this._9() as T9, this._10() as T10, this._11() as T11, this._12() as T12, this._13() as T13, this._14() as T14, this._15() as T15, this._16() as T16, this._17() as T17, this._18() as T18, this._19() as T19, this._20() as T20, this._21() as T21, this._22() as T22) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductDestructuring.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductDestructuring.kt new file mode 100644 index 00000000..e5abefa8 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductDestructuring.kt @@ -0,0 +1,306 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Product1 +import scala.Product2 +import scala.Product3 +import scala.Product4 +import scala.Product5 +import scala.Product6 +import scala.Product7 +import scala.Product8 +import scala.Product9 +import scala.Product10 +import scala.Product11 +import scala.Product12 +import scala.Product13 +import scala.Product14 +import scala.Product15 +import scala.Product16 +import scala.Product17 +import scala.Product18 +import scala.Product19 +import scala.Product20 +import scala.Product21 +import scala.Product22 + +/** + * + * This file provides the operator functions to destructuring for Scala classes implementing ProductX, like Tuples. + * + * This means you can type `val (a, b, c, d) = yourTuple` to unpack its values, + * similar to how [Pair], [Triple] and other data classes work in Kotlin. + * + */ + +operator fun Product1.component1(): T = this._1() +operator fun Product2.component1(): T = this._1() +operator fun Product2<*, T>.component2(): T = this._2() +operator fun Product3.component1(): T = this._1() +operator fun Product3<*, T, *>.component2(): T = this._2() +operator fun Product3<*, *, T>.component3(): T = this._3() +operator fun Product4.component1(): T = this._1() +operator fun Product4<*, T, *, *>.component2(): T = this._2() +operator fun Product4<*, *, T, *>.component3(): T = this._3() +operator fun Product4<*, *, *, T>.component4(): T = this._4() +operator fun Product5.component1(): T = this._1() +operator fun Product5<*, T, *, *, *>.component2(): T = this._2() +operator fun Product5<*, *, T, *, *>.component3(): T = this._3() +operator fun Product5<*, *, *, T, *>.component4(): T = this._4() +operator fun Product5<*, *, *, *, T>.component5(): T = this._5() +operator fun Product6.component1(): T = this._1() +operator fun Product6<*, T, *, *, *, *>.component2(): T = this._2() +operator fun Product6<*, *, T, *, *, *>.component3(): T = this._3() +operator fun Product6<*, *, *, T, *, *>.component4(): T = this._4() +operator fun Product6<*, *, *, *, T, *>.component5(): T = this._5() +operator fun Product6<*, *, *, *, *, T>.component6(): T = this._6() +operator fun Product7.component1(): T = this._1() +operator fun Product7<*, T, *, *, *, *, *>.component2(): T = this._2() +operator fun Product7<*, *, T, *, *, *, *>.component3(): T = this._3() +operator fun Product7<*, *, *, T, *, *, *>.component4(): T = this._4() +operator fun Product7<*, *, *, *, T, *, *>.component5(): T = this._5() +operator fun Product7<*, *, *, *, *, T, *>.component6(): T = this._6() +operator fun Product7<*, *, *, *, *, *, T>.component7(): T = this._7() +operator fun Product8.component1(): T = this._1() +operator fun Product8<*, T, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product8<*, *, T, *, *, *, *, *>.component3(): T = this._3() +operator fun Product8<*, *, *, T, *, *, *, *>.component4(): T = this._4() +operator fun Product8<*, *, *, *, T, *, *, *>.component5(): T = this._5() +operator fun Product8<*, *, *, *, *, T, *, *>.component6(): T = this._6() +operator fun Product8<*, *, *, *, *, *, T, *>.component7(): T = this._7() +operator fun Product8<*, *, *, *, *, *, *, T>.component8(): T = this._8() +operator fun Product9.component1(): T = this._1() +operator fun Product9<*, T, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product9<*, *, T, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product9<*, *, *, T, *, *, *, *, *>.component4(): T = this._4() +operator fun Product9<*, *, *, *, T, *, *, *, *>.component5(): T = this._5() +operator fun Product9<*, *, *, *, *, T, *, *, *>.component6(): T = this._6() +operator fun Product9<*, *, *, *, *, *, T, *, *>.component7(): T = this._7() +operator fun Product9<*, *, *, *, *, *, *, T, *>.component8(): T = this._8() +operator fun Product9<*, *, *, *, *, *, *, *, T>.component9(): T = this._9() +operator fun Product10.component1(): T = this._1() +operator fun Product10<*, T, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product10<*, *, T, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product10<*, *, *, T, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product10<*, *, *, *, T, *, *, *, *, *>.component5(): T = this._5() +operator fun Product10<*, *, *, *, *, T, *, *, *, *>.component6(): T = this._6() +operator fun Product10<*, *, *, *, *, *, T, *, *, *>.component7(): T = this._7() +operator fun Product10<*, *, *, *, *, *, *, T, *, *>.component8(): T = this._8() +operator fun Product10<*, *, *, *, *, *, *, *, T, *>.component9(): T = this._9() +operator fun Product10<*, *, *, *, *, *, *, *, *, T>.component10(): T = this._10() +operator fun Product11.component1(): T = this._1() +operator fun Product11<*, T, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product11<*, *, T, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product11<*, *, *, T, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product11<*, *, *, *, T, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product11<*, *, *, *, *, T, *, *, *, *, *>.component6(): T = this._6() +operator fun Product11<*, *, *, *, *, *, T, *, *, *, *>.component7(): T = this._7() +operator fun Product11<*, *, *, *, *, *, *, T, *, *, *>.component8(): T = this._8() +operator fun Product11<*, *, *, *, *, *, *, *, T, *, *>.component9(): T = this._9() +operator fun Product11<*, *, *, *, *, *, *, *, *, T, *>.component10(): T = this._10() +operator fun Product11<*, *, *, *, *, *, *, *, *, *, T>.component11(): T = this._11() +operator fun Product12.component1(): T = this._1() +operator fun Product12<*, T, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product12<*, *, T, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product12<*, *, *, T, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product12<*, *, *, *, T, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product12<*, *, *, *, *, T, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product12<*, *, *, *, *, *, T, *, *, *, *, *>.component7(): T = this._7() +operator fun Product12<*, *, *, *, *, *, *, T, *, *, *, *>.component8(): T = this._8() +operator fun Product12<*, *, *, *, *, *, *, *, T, *, *, *>.component9(): T = this._9() +operator fun Product12<*, *, *, *, *, *, *, *, *, T, *, *>.component10(): T = this._10() +operator fun Product12<*, *, *, *, *, *, *, *, *, *, T, *>.component11(): T = this._11() +operator fun Product12<*, *, *, *, *, *, *, *, *, *, *, T>.component12(): T = this._12() +operator fun Product13.component1(): T = this._1() +operator fun Product13<*, T, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product13<*, *, T, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product13<*, *, *, T, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product13<*, *, *, *, T, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product13<*, *, *, *, *, T, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product13<*, *, *, *, *, *, T, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product13<*, *, *, *, *, *, *, T, *, *, *, *, *>.component8(): T = this._8() +operator fun Product13<*, *, *, *, *, *, *, *, T, *, *, *, *>.component9(): T = this._9() +operator fun Product13<*, *, *, *, *, *, *, *, *, T, *, *, *>.component10(): T = this._10() +operator fun Product13<*, *, *, *, *, *, *, *, *, *, T, *, *>.component11(): T = this._11() +operator fun Product13<*, *, *, *, *, *, *, *, *, *, *, T, *>.component12(): T = this._12() +operator fun Product13<*, *, *, *, *, *, *, *, *, *, *, *, T>.component13(): T = this._13() +operator fun Product14.component1(): T = this._1() +operator fun Product14<*, T, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product14<*, *, T, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product14<*, *, *, T, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product14<*, *, *, *, T, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product14<*, *, *, *, *, T, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product14<*, *, *, *, *, *, T, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product14<*, *, *, *, *, *, *, T, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product14<*, *, *, *, *, *, *, *, T, *, *, *, *, *>.component9(): T = this._9() +operator fun Product14<*, *, *, *, *, *, *, *, *, T, *, *, *, *>.component10(): T = this._10() +operator fun Product14<*, *, *, *, *, *, *, *, *, *, T, *, *, *>.component11(): T = this._11() +operator fun Product14<*, *, *, *, *, *, *, *, *, *, *, T, *, *>.component12(): T = this._12() +operator fun Product14<*, *, *, *, *, *, *, *, *, *, *, *, T, *>.component13(): T = this._13() +operator fun Product14<*, *, *, *, *, *, *, *, *, *, *, *, *, T>.component14(): T = this._14() +operator fun Product15.component1(): T = this._1() +operator fun Product15<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product15<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product15<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product15<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product15<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product15<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product15<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product15<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product15<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component10(): T = this._10() +operator fun Product15<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component11(): T = this._11() +operator fun Product15<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component12(): T = this._12() +operator fun Product15<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component13(): T = this._13() +operator fun Product15<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component14(): T = this._14() +operator fun Product15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component15(): T = this._15() +operator fun Product16.component1(): T = this._1() +operator fun Product16<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product16<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product16<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product16<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product16<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product16<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product16<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product16<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product16<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component11(): T = this._11() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component12(): T = this._12() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component13(): T = this._13() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component14(): T = this._14() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component15(): T = this._15() +operator fun Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component16(): T = this._16() +operator fun Product17.component1(): T = this._1() +operator fun Product17<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product17<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product17<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product17<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product17<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product17<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product17<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product17<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product17<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component12(): T = this._12() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component13(): T = this._13() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component14(): T = this._14() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component15(): T = this._15() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component16(): T = this._16() +operator fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component17(): T = this._17() +operator fun Product18.component1(): T = this._1() +operator fun Product18<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product18<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product18<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product18<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product18<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product18<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product18<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product18<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product18<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component12(): T = this._12() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component13(): T = this._13() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component14(): T = this._14() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component15(): T = this._15() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component16(): T = this._16() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component17(): T = this._17() +operator fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component18(): T = this._18() +operator fun Product19.component1(): T = this._1() +operator fun Product19<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product19<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product19<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product19<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product19<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product19<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product19<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product19<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product19<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component12(): T = this._12() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component13(): T = this._13() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component14(): T = this._14() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component15(): T = this._15() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component16(): T = this._16() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component17(): T = this._17() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component18(): T = this._18() +operator fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component19(): T = this._19() +operator fun Product20.component1(): T = this._1() +operator fun Product20<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product20<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product20<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product20<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product20<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product20<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product20<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product20<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product20<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component12(): T = this._12() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component13(): T = this._13() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component14(): T = this._14() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component15(): T = this._15() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component16(): T = this._16() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component17(): T = this._17() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component18(): T = this._18() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component19(): T = this._19() +operator fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component20(): T = this._20() +operator fun Product21.component1(): T = this._1() +operator fun Product21<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product21<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product21<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product21<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product21<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product21<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product21<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product21<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product21<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component12(): T = this._12() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component13(): T = this._13() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component14(): T = this._14() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component15(): T = this._15() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component16(): T = this._16() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component17(): T = this._17() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component18(): T = this._18() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component19(): T = this._19() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component20(): T = this._20() +operator fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component21(): T = this._21() +operator fun Product22.component1(): T = this._1() +operator fun Product22<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component2(): T = this._2() +operator fun Product22<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component3(): T = this._3() +operator fun Product22<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component4(): T = this._4() +operator fun Product22<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component5(): T = this._5() +operator fun Product22<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component6(): T = this._6() +operator fun Product22<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component7(): T = this._7() +operator fun Product22<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.component8(): T = this._8() +operator fun Product22<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>.component9(): T = this._9() +operator fun Product22<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>.component10(): T = this._10() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>.component11(): T = this._11() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>.component12(): T = this._12() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>.component13(): T = this._13() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>.component14(): T = this._14() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>.component15(): T = this._15() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>.component16(): T = this._16() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>.component17(): T = this._17() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>.component18(): T = this._18() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>.component19(): T = this._19() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>.component20(): T = this._20() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>.component21(): T = this._21() +operator fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.component22(): T = this._22() diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductExtensions.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductExtensions.kt new file mode 100644 index 00000000..cca9d553 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductExtensions.kt @@ -0,0 +1,157 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Product +import scala.collection.JavaConverters +import kotlin.jvm.Throws + +/** + * Extra extensions for Scala [Product]s such as Tuples. + * In most cases, the functions of `SameTypeProductExtensions.kt` will be used + * instead of these. But these help for the overview and generic case. + * + * For example: + * + * ```kotlin + * 1 in tupleOf(1, 2, 3) == true + * + * for (x in tupleOf("a", "b", "c")) { ... } + * + * val a: List = tupleOf(1, "a", 3L).asIterable().toList() + * + * tupleOf(1, 2, 3).size == 3 + * + * tupleOf(1, 2, 3)[0] == 1 + * + * tupleOf(1, 1, 2)[1..2] == tupleOf(1, 2, 2)[0..1] + * ``` + * + */ + +/** Tests whether this iterator contains a given value as an element. + * Note: may not terminate for infinite iterators. + * + * @param item the element to test. + * @return `true` if this iterator produces some value that + * is equal (as determined by `==`) to `elem`, `false` otherwise. + * @note Reuse: After calling this method, one should discard the iterator it was called on. + * Using it is undefined and subject to change. + */ +operator fun Product.contains(item: Any?): Boolean = productIterator().contains(item) + +/** + * An iterator over all the elements of this product. + * @return in the default implementation, an `Iterator` + */ +operator fun Product.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator()) + +/** + * Converts this product to an `Any?` iterable. + */ +fun Product.asIterable(): Iterable = object : Iterable { + override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator()) +} + +/** The size of this product. + * @return for a product `A(x,,1,,, ..., x,,k,,)`, returns `k` + */ +val Product.size: Int + get() = productArity() + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product.get(n: Int): Any? = productElement(n) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product.getOrNull(n: Int): Any? = if (n in 0 until size) productElement(n) else null + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * The result is cast to the given type [T]. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @throws ClassCastException + * @return the element `n` elements after the first element + */ +@Suppress("UNCHECKED_CAST") +@Throws(IndexOutOfBoundsException::class, ClassCastException::class) +inline fun Product.getAs(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * The result is cast to the given type [T]. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds or unable to be cast + */ +@Suppress("UNCHECKED_CAST") +inline fun Product.getAsOrNull(n: Int): T? = getOrNull(n) as? T + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * The results are cast to the given type [T]. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @throws ClassCastException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class, ClassCastException::class) +inline fun Product.getAs(indexRange: IntRange): List = indexRange.map(::getAs) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * The results are cast to the given type [T]. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` is out of bounds or unable to be cast + */ +inline fun Product.getAsOrNull(indexRange: IntRange): List = indexRange.map(::getAsOrNull) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductTextualAccessors.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductTextualAccessors.kt new file mode 100644 index 00000000..4e9c676b --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/ProductTextualAccessors.kt @@ -0,0 +1,690 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("ObjectPropertyName") + +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Product1 +import scala.Product2 +import scala.Product3 +import scala.Product4 +import scala.Product5 +import scala.Product6 +import scala.Product7 +import scala.Product8 +import scala.Product9 +import scala.Product10 +import scala.Product11 +import scala.Product12 +import scala.Product13 +import scala.Product14 +import scala.Product15 +import scala.Product16 +import scala.Product17 +import scala.Product18 +import scala.Product19 +import scala.Product20 +import scala.Product21 +import scala.Product22 + +/** + * + * This file provides the functions `yourTuple.first()` and `yourTuple.last()` to access + * the value you require. + * + */ + +val Product1._1: T get() = this._1() + +/** Returns the first value of this Tuple or Product. */ +fun Product1.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product1.last(): T = this._1() + +val Product2._1: T get() = this._1() + +val Product2<*, T>._2: T get() = this._2() + +/** Returns the first value of this Tuple or Product. */ +fun Product2.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product2<*, T>.last(): T = this._2() + +val Product3._1: T get() = this._1() + +val Product3<*, T, *>._2: T get() = this._2() + +val Product3<*, *, T>._3: T get() = this._3() + +/** Returns the first value of this Tuple or Product. */ +fun Product3.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product3<*, *, T>.last(): T = this._3() + +val Product4._1: T get() = this._1() + +val Product4<*, T, *, *>._2: T get() = this._2() + +val Product4<*, *, T, *>._3: T get() = this._3() + +val Product4<*, *, *, T>._4: T get() = this._4() + +/** Returns the first value of this Tuple or Product. */ +fun Product4.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product4<*, *, *, T>.last(): T = this._4() + +val Product5._1: T get() = this._1() + +val Product5<*, T, *, *, *>._2: T get() = this._2() + +val Product5<*, *, T, *, *>._3: T get() = this._3() + +val Product5<*, *, *, T, *>._4: T get() = this._4() + +val Product5<*, *, *, *, T>._5: T get() = this._5() + +/** Returns the first value of this Tuple or Product. */ +fun Product5.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product5<*, *, *, *, T>.last(): T = this._5() + +val Product6._1: T get() = this._1() + +val Product6<*, T, *, *, *, *>._2: T get() = this._2() + +val Product6<*, *, T, *, *, *>._3: T get() = this._3() + +val Product6<*, *, *, T, *, *>._4: T get() = this._4() + +val Product6<*, *, *, *, T, *>._5: T get() = this._5() + +val Product6<*, *, *, *, *, T>._6: T get() = this._6() + +/** Returns the first value of this Tuple or Product. */ +fun Product6.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product6<*, *, *, *, *, T>.last(): T = this._6() + +val Product7._1: T get() = this._1() + +val Product7<*, T, *, *, *, *, *>._2: T get() = this._2() + +val Product7<*, *, T, *, *, *, *>._3: T get() = this._3() + +val Product7<*, *, *, T, *, *, *>._4: T get() = this._4() + +val Product7<*, *, *, *, T, *, *>._5: T get() = this._5() + +val Product7<*, *, *, *, *, T, *>._6: T get() = this._6() + +val Product7<*, *, *, *, *, *, T>._7: T get() = this._7() + +/** Returns the first value of this Tuple or Product. */ +fun Product7.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product7<*, *, *, *, *, *, T>.last(): T = this._7() + +val Product8._1: T get() = this._1() + +val Product8<*, T, *, *, *, *, *, *>._2: T get() = this._2() + +val Product8<*, *, T, *, *, *, *, *>._3: T get() = this._3() + +val Product8<*, *, *, T, *, *, *, *>._4: T get() = this._4() + +val Product8<*, *, *, *, T, *, *, *>._5: T get() = this._5() + +val Product8<*, *, *, *, *, T, *, *>._6: T get() = this._6() + +val Product8<*, *, *, *, *, *, T, *>._7: T get() = this._7() + +val Product8<*, *, *, *, *, *, *, T>._8: T get() = this._8() + +/** Returns the first value of this Tuple or Product. */ +fun Product8.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product8<*, *, *, *, *, *, *, T>.last(): T = this._8() + +val Product9._1: T get() = this._1() + +val Product9<*, T, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product9<*, *, T, *, *, *, *, *, *>._3: T get() = this._3() + +val Product9<*, *, *, T, *, *, *, *, *>._4: T get() = this._4() + +val Product9<*, *, *, *, T, *, *, *, *>._5: T get() = this._5() + +val Product9<*, *, *, *, *, T, *, *, *>._6: T get() = this._6() + +val Product9<*, *, *, *, *, *, T, *, *>._7: T get() = this._7() + +val Product9<*, *, *, *, *, *, *, T, *>._8: T get() = this._8() + +val Product9<*, *, *, *, *, *, *, *, T>._9: T get() = this._9() + +/** Returns the first value of this Tuple or Product. */ +fun Product9.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product9<*, *, *, *, *, *, *, *, T>.last(): T = this._9() + +val Product10._1: T get() = this._1() + +val Product10<*, T, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product10<*, *, T, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product10<*, *, *, T, *, *, *, *, *, *>._4: T get() = this._4() + +val Product10<*, *, *, *, T, *, *, *, *, *>._5: T get() = this._5() + +val Product10<*, *, *, *, *, T, *, *, *, *>._6: T get() = this._6() + +val Product10<*, *, *, *, *, *, T, *, *, *>._7: T get() = this._7() + +val Product10<*, *, *, *, *, *, *, T, *, *>._8: T get() = this._8() + +val Product10<*, *, *, *, *, *, *, *, T, *>._9: T get() = this._9() + +val Product10<*, *, *, *, *, *, *, *, *, T>._10: T get() = this._10() + +/** Returns the first value of this Tuple or Product. */ +fun Product10.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product10<*, *, *, *, *, *, *, *, *, T>.last(): T = this._10() + +val Product11._1: T get() = this._1() + +val Product11<*, T, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product11<*, *, T, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product11<*, *, *, T, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product11<*, *, *, *, T, *, *, *, *, *, *>._5: T get() = this._5() + +val Product11<*, *, *, *, *, T, *, *, *, *, *>._6: T get() = this._6() + +val Product11<*, *, *, *, *, *, T, *, *, *, *>._7: T get() = this._7() + +val Product11<*, *, *, *, *, *, *, T, *, *, *>._8: T get() = this._8() + +val Product11<*, *, *, *, *, *, *, *, T, *, *>._9: T get() = this._9() + +val Product11<*, *, *, *, *, *, *, *, *, T, *>._10: T get() = this._10() + +val Product11<*, *, *, *, *, *, *, *, *, *, T>._11: T get() = this._11() + +/** Returns the first value of this Tuple or Product. */ +fun Product11.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product11<*, *, *, *, *, *, *, *, *, *, T>.last(): T = this._11() + +val Product12._1: T get() = this._1() + +val Product12<*, T, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product12<*, *, T, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product12<*, *, *, T, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product12<*, *, *, *, T, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product12<*, *, *, *, *, T, *, *, *, *, *, *>._6: T get() = this._6() + +val Product12<*, *, *, *, *, *, T, *, *, *, *, *>._7: T get() = this._7() + +val Product12<*, *, *, *, *, *, *, T, *, *, *, *>._8: T get() = this._8() + +val Product12<*, *, *, *, *, *, *, *, T, *, *, *>._9: T get() = this._9() + +val Product12<*, *, *, *, *, *, *, *, *, T, *, *>._10: T get() = this._10() + +val Product12<*, *, *, *, *, *, *, *, *, *, T, *>._11: T get() = this._11() + +val Product12<*, *, *, *, *, *, *, *, *, *, *, T>._12: T get() = this._12() + +/** Returns the first value of this Tuple or Product. */ +fun Product12.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product12<*, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._12() + +val Product13._1: T get() = this._1() + +val Product13<*, T, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product13<*, *, T, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product13<*, *, *, T, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product13<*, *, *, *, T, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product13<*, *, *, *, *, T, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product13<*, *, *, *, *, *, T, *, *, *, *, *, *>._7: T get() = this._7() + +val Product13<*, *, *, *, *, *, *, T, *, *, *, *, *>._8: T get() = this._8() + +val Product13<*, *, *, *, *, *, *, *, T, *, *, *, *>._9: T get() = this._9() + +val Product13<*, *, *, *, *, *, *, *, *, T, *, *, *>._10: T get() = this._10() + +val Product13<*, *, *, *, *, *, *, *, *, *, T, *, *>._11: T get() = this._11() + +val Product13<*, *, *, *, *, *, *, *, *, *, *, T, *>._12: T get() = this._12() + +val Product13<*, *, *, *, *, *, *, *, *, *, *, *, T>._13: T get() = this._13() + +/** Returns the first value of this Tuple or Product. */ +fun Product13.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product13<*, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._13() + +val Product14._1: T get() = this._1() + +val Product14<*, T, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product14<*, *, T, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product14<*, *, *, T, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product14<*, *, *, *, T, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product14<*, *, *, *, *, T, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product14<*, *, *, *, *, *, T, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product14<*, *, *, *, *, *, *, T, *, *, *, *, *, *>._8: T get() = this._8() + +val Product14<*, *, *, *, *, *, *, *, T, *, *, *, *, *>._9: T get() = this._9() + +val Product14<*, *, *, *, *, *, *, *, *, T, *, *, *, *>._10: T get() = this._10() + +val Product14<*, *, *, *, *, *, *, *, *, *, T, *, *, *>._11: T get() = this._11() + +val Product14<*, *, *, *, *, *, *, *, *, *, *, T, *, *>._12: T get() = this._12() + +val Product14<*, *, *, *, *, *, *, *, *, *, *, *, T, *>._13: T get() = this._13() + +val Product14<*, *, *, *, *, *, *, *, *, *, *, *, *, T>._14: T get() = this._14() + +/** Returns the first value of this Tuple or Product. */ +fun Product14.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product14<*, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._14() + +val Product15._1: T get() = this._1() + +val Product15<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product15<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product15<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product15<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product15<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product15<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product15<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product15<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._9: T get() = this._9() + +val Product15<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._10: T get() = this._10() + +val Product15<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._11: T get() = this._11() + +val Product15<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._12: T get() = this._12() + +val Product15<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._13: T get() = this._13() + +val Product15<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._14: T get() = this._14() + +val Product15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._15: T get() = this._15() + +/** Returns the first value of this Tuple or Product. */ +fun Product15.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._15() + +val Product16._1: T get() = this._1() + +val Product16<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product16<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product16<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product16<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product16<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product16<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product16<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product16<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product16<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._10: T get() = this._10() + +val Product16<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._11: T get() = this._11() + +val Product16<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._12: T get() = this._12() + +val Product16<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._13: T get() = this._13() + +val Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._14: T get() = this._14() + +val Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._15: T get() = this._15() + +val Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._16: T get() = this._16() + +/** Returns the first value of this Tuple or Product. */ +fun Product16.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._16() + +val Product17._1: T get() = this._1() + +val Product17<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product17<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product17<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product17<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product17<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product17<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product17<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product17<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product17<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product17<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._11: T get() = this._11() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._12: T get() = this._12() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._13: T get() = this._13() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._14: T get() = this._14() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._15: T get() = this._15() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._16: T get() = this._16() + +val Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._17: T get() = this._17() + +/** Returns the first value of this Tuple or Product. */ +fun Product17.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._17() + +val Product18._1: T get() = this._1() + +val Product18<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product18<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product18<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product18<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product18<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product18<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product18<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product18<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product18<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product18<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._11: T get() = this._11() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._12: T get() = this._12() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._13: T get() = this._13() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._14: T get() = this._14() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._15: T get() = this._15() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._16: T get() = this._16() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._17: T get() = this._17() + +val Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._18: T get() = this._18() + +/** Returns the first value of this Tuple or Product. */ +fun Product18.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._18() + +val Product19._1: T get() = this._1() + +val Product19<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product19<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product19<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product19<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product19<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product19<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product19<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product19<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product19<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product19<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._11: T get() = this._11() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._12: T get() = this._12() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._13: T get() = this._13() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._14: T get() = this._14() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._15: T get() = this._15() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._16: T get() = this._16() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._17: T get() = this._17() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._18: T get() = this._18() + +val Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._19: T get() = this._19() + +/** Returns the first value of this Tuple or Product. */ +fun Product19.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._19() + +val Product20._1: T get() = this._1() + +val Product20<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product20<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product20<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product20<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product20<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product20<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product20<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product20<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product20<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product20<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._11: T get() = this._11() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._12: T get() = this._12() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._13: T get() = this._13() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._14: T get() = this._14() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._15: T get() = this._15() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._16: T get() = this._16() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._17: T get() = this._17() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._18: T get() = this._18() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._19: T get() = this._19() + +val Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._20: T get() = this._20() + +/** Returns the first value of this Tuple or Product. */ +fun Product20.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._20() + +val Product21._1: T get() = this._1() + +val Product21<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product21<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product21<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product21<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product21<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product21<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product21<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product21<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product21<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product21<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._11: T get() = this._11() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._12: T get() = this._12() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._13: T get() = this._13() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._14: T get() = this._14() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._15: T get() = this._15() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._16: T get() = this._16() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._17: T get() = this._17() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._18: T get() = this._18() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._19: T get() = this._19() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._20: T get() = this._20() + +val Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._21: T get() = this._21() + +/** Returns the first value of this Tuple or Product. */ +fun Product21.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._21() + +val Product22._1: T get() = this._1() + +val Product22<*, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._2: T get() = this._2() + +val Product22<*, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._3: T get() = this._3() + +val Product22<*, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._4: T get() = this._4() + +val Product22<*, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._5: T get() = this._5() + +val Product22<*, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._6: T get() = this._6() + +val Product22<*, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._7: T get() = this._7() + +val Product22<*, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *, *>._8: T get() = this._8() + +val Product22<*, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *, *>._9: T get() = this._9() + +val Product22<*, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *, *>._10: T get() = this._10() + +val Product22<*, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *, *>._11: T get() = this._11() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *, *>._12: T get() = this._12() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *, *>._13: T get() = this._13() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *, *>._14: T get() = this._14() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *, *>._15: T get() = this._15() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *, *>._16: T get() = this._16() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *, *>._17: T get() = this._17() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *, *>._18: T get() = this._18() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *, *>._19: T get() = this._19() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *, *>._20: T get() = this._20() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T, *>._21: T get() = this._21() + +val Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>._22: T get() = this._22() + +/** Returns the first value of this Tuple or Product. */ +fun Product22.first(): T = this._1() + +/** Returns the last value of this Tuple or Product. */ +fun Product22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T>.last(): T = this._22() diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleBuilders.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleBuilders.kt new file mode 100644 index 00000000..365be37a --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleBuilders.kt @@ -0,0 +1,378 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("FunctionName", "RemoveExplicitTypeArguments", "DuplicatedCode") +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Tuple1 +import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 +import scala.Tuple6 +import scala.Tuple7 +import scala.Tuple8 +import scala.Tuple9 +import scala.Tuple10 +import scala.Tuple11 +import scala.Tuple12 +import scala.Tuple13 +import scala.Tuple14 +import scala.Tuple15 +import scala.Tuple16 +import scala.Tuple17 +import scala.Tuple18 +import scala.Tuple19 +import scala.Tuple20 +import scala.Tuple21 +import scala.Tuple22 + +/** + * This file contains simple functional Tuple builders in the form of `tupleOf()`. + * + * This allows you to easily create the correct type of tuple with correct types like + * ```val yourTuple = tupleOf(1, "test", a)``` + * or + * ```val yourTuple = t(1, "test", a)``` + * + * As replacement of `to` there is + * ```val tuple: Tuple2 = 5 X "test"``` + */ + +/** + * Returns the instance of Tuple0. + * @see t + */ +fun tupleOf(): EmptyTuple = EmptyTuple + + +/** + * Returns a new Tuple1 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1): Tuple1 = Tuple1(_1) + +/** + * Returns a new Tuple2 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2): Tuple2 = Tuple2(_1, _2) + +/** + * Returns a new Tuple3 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3): Tuple3 = Tuple3(_1, _2, _3) + +/** + * Returns a new Tuple4 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4): Tuple4 = Tuple4(_1, _2, _3, _4) + +/** + * Returns a new Tuple5 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5): Tuple5 = Tuple5(_1, _2, _3, _4, _5) + +/** + * Returns a new Tuple6 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6): Tuple6 = Tuple6(_1, _2, _3, _4, _5, _6) + +/** + * Returns a new Tuple7 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7): Tuple7 = Tuple7(_1, _2, _3, _4, _5, _6, _7) + +/** + * Returns a new Tuple8 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8): Tuple8 = Tuple8(_1, _2, _3, _4, _5, _6, _7, _8) + +/** + * Returns a new Tuple9 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9): Tuple9 = Tuple9(_1, _2, _3, _4, _5, _6, _7, _8, _9) + +/** + * Returns a new Tuple10 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10): Tuple10 = Tuple10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + +/** + * Returns a new Tuple11 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11): Tuple11 = Tuple11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) + +/** + * Returns a new Tuple12 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12): Tuple12 = Tuple12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) + +/** + * Returns a new Tuple13 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13): Tuple13 = Tuple13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) + +/** + * Returns a new Tuple14 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14): Tuple14 = Tuple14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) + +/** + * Returns a new Tuple15 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15): Tuple15 = Tuple15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) + +/** + * Returns a new Tuple16 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16): Tuple16 = Tuple16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) + +/** + * Returns a new Tuple17 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17): Tuple17 = Tuple17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) + +/** + * Returns a new Tuple18 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18): Tuple18 = Tuple18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) + +/** + * Returns a new Tuple19 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19): Tuple19 = Tuple19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) + +/** + * Returns a new Tuple20 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20): Tuple20 = Tuple20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) + +/** + * Returns a new Tuple21 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21): Tuple21 = Tuple21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) + +/** + * Returns a new Tuple22 of the given arguments. + * @see t + * @see X + */ +fun tupleOf(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22): Tuple22 = Tuple22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) + +/** + * Returns the instance of Tuple0. + * @see tupleOf + */ +fun t(): EmptyTuple = EmptyTuple + + +/** + * Returns a new Tuple1 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1): Tuple1 = Tuple1(_1) + +/** + * Returns a new Tuple2 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2): Tuple2 = Tuple2(_1, _2) + +/** + * Returns a new Tuple3 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3): Tuple3 = Tuple3(_1, _2, _3) + +/** + * Returns a new Tuple4 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4): Tuple4 = Tuple4(_1, _2, _3, _4) + +/** + * Returns a new Tuple5 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5): Tuple5 = Tuple5(_1, _2, _3, _4, _5) + +/** + * Returns a new Tuple6 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6): Tuple6 = Tuple6(_1, _2, _3, _4, _5, _6) + +/** + * Returns a new Tuple7 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7): Tuple7 = Tuple7(_1, _2, _3, _4, _5, _6, _7) + +/** + * Returns a new Tuple8 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8): Tuple8 = Tuple8(_1, _2, _3, _4, _5, _6, _7, _8) + +/** + * Returns a new Tuple9 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9): Tuple9 = Tuple9(_1, _2, _3, _4, _5, _6, _7, _8, _9) + +/** + * Returns a new Tuple10 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10): Tuple10 = Tuple10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) + +/** + * Returns a new Tuple11 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11): Tuple11 = Tuple11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) + +/** + * Returns a new Tuple12 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12): Tuple12 = Tuple12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) + +/** + * Returns a new Tuple13 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13): Tuple13 = Tuple13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) + +/** + * Returns a new Tuple14 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14): Tuple14 = Tuple14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) + +/** + * Returns a new Tuple15 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15): Tuple15 = Tuple15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) + +/** + * Returns a new Tuple16 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16): Tuple16 = Tuple16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) + +/** + * Returns a new Tuple17 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17): Tuple17 = Tuple17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) + +/** + * Returns a new Tuple18 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18): Tuple18 = Tuple18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) + +/** + * Returns a new Tuple19 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19): Tuple19 = Tuple19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) + +/** + * Returns a new Tuple20 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20): Tuple20 = Tuple20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) + +/** + * Returns a new Tuple21 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21): Tuple21 = Tuple21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) + +/** + * Returns a new Tuple22 of the given arguments. + * @see tupleOf + * @see X + */ +fun t(_1: T1, _2: T2, _3: T3, _4: T4, _5: T5, _6: T6, _7: T7, _8: T8, _9: T9, _10: T10, _11: T11, _12: T12, _13: T13, _14: T14, _15: T15, _16: T16, _17: T17, _18: T18, _19: T19, _20: T20, _21: T21, _22: T22): Tuple22 = Tuple22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleConcatenation.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleConcatenation.kt new file mode 100644 index 00000000..fe07a4ff --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleConcatenation.kt @@ -0,0 +1,613 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("FunctionName", "RemoveExplicitTypeArguments") +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Tuple1 +import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 +import scala.Tuple6 +import scala.Tuple7 +import scala.Tuple8 +import scala.Tuple9 +import scala.Tuple10 +import scala.Tuple11 +import scala.Tuple12 +import scala.Tuple13 +import scala.Tuple14 +import scala.Tuple15 +import scala.Tuple16 +import scala.Tuple17 +import scala.Tuple18 +import scala.Tuple19 +import scala.Tuple20 +import scala.Tuple21 +import scala.Tuple22 + +/** + * This file provides functions to easily merge two separate tuples into one. + * + * For example (using tupleOf() to create a new tuple): + * ```tupleOf(a, b) concat tupleOf(c, d) == tupleOf(a, b, c, d)``` + * or using the shorthand: + * ```tupleOf(a, b) + tupleOf(c, d) == tupleOf(a, b, c, d)``` + * + * If you mean to create ```tupleOf(a, b, tupleOf(c, d))``` or ```tupleOf(tupleOf(a, b), c, d)```, + * use [appendedBy] and [prependedBy] explicitly: + * ```t(a, b).appendedBy(t(c, d)) == t(a, b, t(c, d))``` + * or wrap it in another [Tuple1]: + * ```t(a, b) + t(t(c, d)) == t(a, b, t(c, d))``` + * + */ + +infix fun EmptyTuple.concat(other: Tuple1): Tuple1 = other.copy() +infix fun Tuple1.concat(other: EmptyTuple): Tuple1 = this.copy() +infix fun Tuple1.concat(other: Tuple1): Tuple2 = Tuple2(this._1(), other._1()) +infix fun Tuple1.concat(other: Tuple2): Tuple3 = Tuple3(this._1(), other._1(), other._2()) +infix fun Tuple1.concat(other: Tuple3): Tuple4 = Tuple4(this._1(), other._1(), other._2(), other._3()) +infix fun Tuple1.concat(other: Tuple4): Tuple5 = Tuple5(this._1(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple1.concat(other: Tuple5): Tuple6 = Tuple6(this._1(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple1.concat(other: Tuple6): Tuple7 = Tuple7(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple1.concat(other: Tuple7): Tuple8 = Tuple8(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple1.concat(other: Tuple8): Tuple9 = Tuple9(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple1.concat(other: Tuple9): Tuple10 = Tuple10(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple1.concat(other: Tuple10): Tuple11 = Tuple11(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple1.concat(other: Tuple11): Tuple12 = Tuple12(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple1.concat(other: Tuple12): Tuple13 = Tuple13(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple1.concat(other: Tuple13): Tuple14 = Tuple14(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple1.concat(other: Tuple14): Tuple15 = Tuple15(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple1.concat(other: Tuple15): Tuple16 = Tuple16(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple1.concat(other: Tuple16): Tuple17 = Tuple17(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun Tuple1.concat(other: Tuple17): Tuple18 = Tuple18(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +infix fun Tuple1.concat(other: Tuple18): Tuple19 = Tuple19(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +infix fun Tuple1.concat(other: Tuple19): Tuple20 = Tuple20(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +infix fun Tuple1.concat(other: Tuple20): Tuple21 = Tuple21(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20()) +infix fun Tuple1.concat(other: Tuple21): Tuple22 = Tuple22(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20(), other._21()) +infix fun EmptyTuple.concat(other: Tuple2): Tuple2 = other.copy() +infix fun Tuple2.concat(other: EmptyTuple): Tuple2 = this.copy() +infix fun Tuple2.concat(other: Tuple1): Tuple3 = Tuple3(this._1(), this._2(), other._1()) +infix fun Tuple2.concat(other: Tuple2): Tuple4 = Tuple4(this._1(), this._2(), other._1(), other._2()) +infix fun Tuple2.concat(other: Tuple3): Tuple5 = Tuple5(this._1(), this._2(), other._1(), other._2(), other._3()) +infix fun Tuple2.concat(other: Tuple4): Tuple6 = Tuple6(this._1(), this._2(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple2.concat(other: Tuple5): Tuple7 = Tuple7(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple2.concat(other: Tuple6): Tuple8 = Tuple8(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple2.concat(other: Tuple7): Tuple9 = Tuple9(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple2.concat(other: Tuple8): Tuple10 = Tuple10(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple2.concat(other: Tuple9): Tuple11 = Tuple11(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple2.concat(other: Tuple10): Tuple12 = Tuple12(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple2.concat(other: Tuple11): Tuple13 = Tuple13(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple2.concat(other: Tuple12): Tuple14 = Tuple14(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple2.concat(other: Tuple13): Tuple15 = Tuple15(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple2.concat(other: Tuple14): Tuple16 = Tuple16(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple2.concat(other: Tuple15): Tuple17 = Tuple17(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple2.concat(other: Tuple16): Tuple18 = Tuple18(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun Tuple2.concat(other: Tuple17): Tuple19 = Tuple19(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +infix fun Tuple2.concat(other: Tuple18): Tuple20 = Tuple20(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +infix fun Tuple2.concat(other: Tuple19): Tuple21 = Tuple21(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +infix fun Tuple2.concat(other: Tuple20): Tuple22 = Tuple22(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20()) +infix fun EmptyTuple.concat(other: Tuple3): Tuple3 = other.copy() +infix fun Tuple3.concat(other: EmptyTuple): Tuple3 = this.copy() +infix fun Tuple3.concat(other: Tuple1): Tuple4 = Tuple4(this._1(), this._2(), this._3(), other._1()) +infix fun Tuple3.concat(other: Tuple2): Tuple5 = Tuple5(this._1(), this._2(), this._3(), other._1(), other._2()) +infix fun Tuple3.concat(other: Tuple3): Tuple6 = Tuple6(this._1(), this._2(), this._3(), other._1(), other._2(), other._3()) +infix fun Tuple3.concat(other: Tuple4): Tuple7 = Tuple7(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple3.concat(other: Tuple5): Tuple8 = Tuple8(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple3.concat(other: Tuple6): Tuple9 = Tuple9(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple3.concat(other: Tuple7): Tuple10 = Tuple10(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple3.concat(other: Tuple8): Tuple11 = Tuple11(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple3.concat(other: Tuple9): Tuple12 = Tuple12(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple3.concat(other: Tuple10): Tuple13 = Tuple13(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple3.concat(other: Tuple11): Tuple14 = Tuple14(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple3.concat(other: Tuple12): Tuple15 = Tuple15(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple3.concat(other: Tuple13): Tuple16 = Tuple16(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple3.concat(other: Tuple14): Tuple17 = Tuple17(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple3.concat(other: Tuple15): Tuple18 = Tuple18(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple3.concat(other: Tuple16): Tuple19 = Tuple19(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun Tuple3.concat(other: Tuple17): Tuple20 = Tuple20(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +infix fun Tuple3.concat(other: Tuple18): Tuple21 = Tuple21(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +infix fun Tuple3.concat(other: Tuple19): Tuple22 = Tuple22(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +infix fun EmptyTuple.concat(other: Tuple4): Tuple4 = other.copy() +infix fun Tuple4.concat(other: EmptyTuple): Tuple4 = this.copy() +infix fun Tuple4.concat(other: Tuple1): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), other._1()) +infix fun Tuple4.concat(other: Tuple2): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), other._1(), other._2()) +infix fun Tuple4.concat(other: Tuple3): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3()) +infix fun Tuple4.concat(other: Tuple4): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple4.concat(other: Tuple5): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple4.concat(other: Tuple6): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple4.concat(other: Tuple7): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple4.concat(other: Tuple8): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple4.concat(other: Tuple9): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple4.concat(other: Tuple10): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple4.concat(other: Tuple11): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple4.concat(other: Tuple12): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple4.concat(other: Tuple13): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple4.concat(other: Tuple14): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple4.concat(other: Tuple15): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple4.concat(other: Tuple16): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun Tuple4.concat(other: Tuple17): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +infix fun Tuple4.concat(other: Tuple18): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +infix fun EmptyTuple.concat(other: Tuple5): Tuple5 = other.copy() +infix fun Tuple5.concat(other: EmptyTuple): Tuple5 = this.copy() +infix fun Tuple5.concat(other: Tuple1): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), other._1()) +infix fun Tuple5.concat(other: Tuple2): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2()) +infix fun Tuple5.concat(other: Tuple3): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3()) +infix fun Tuple5.concat(other: Tuple4): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple5.concat(other: Tuple5): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple5.concat(other: Tuple6): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple5.concat(other: Tuple7): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple5.concat(other: Tuple8): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple5.concat(other: Tuple9): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple5.concat(other: Tuple10): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple5.concat(other: Tuple11): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple5.concat(other: Tuple12): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple5.concat(other: Tuple13): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple5.concat(other: Tuple14): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple5.concat(other: Tuple15): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple5.concat(other: Tuple16): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun Tuple5.concat(other: Tuple17): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +infix fun EmptyTuple.concat(other: Tuple6): Tuple6 = other.copy() +infix fun Tuple6.concat(other: EmptyTuple): Tuple6 = this.copy() +infix fun Tuple6.concat(other: Tuple1): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1()) +infix fun Tuple6.concat(other: Tuple2): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2()) +infix fun Tuple6.concat(other: Tuple3): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3()) +infix fun Tuple6.concat(other: Tuple4): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple6.concat(other: Tuple5): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple6.concat(other: Tuple6): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple6.concat(other: Tuple7): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple6.concat(other: Tuple8): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple6.concat(other: Tuple9): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple6.concat(other: Tuple10): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple6.concat(other: Tuple11): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple6.concat(other: Tuple12): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple6.concat(other: Tuple13): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple6.concat(other: Tuple14): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple6.concat(other: Tuple15): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun Tuple6.concat(other: Tuple16): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +infix fun EmptyTuple.concat(other: Tuple7): Tuple7 = other.copy() +infix fun Tuple7.concat(other: EmptyTuple): Tuple7 = this.copy() +infix fun Tuple7.concat(other: Tuple1): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1()) +infix fun Tuple7.concat(other: Tuple2): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2()) +infix fun Tuple7.concat(other: Tuple3): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3()) +infix fun Tuple7.concat(other: Tuple4): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple7.concat(other: Tuple5): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple7.concat(other: Tuple6): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple7.concat(other: Tuple7): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple7.concat(other: Tuple8): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple7.concat(other: Tuple9): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple7.concat(other: Tuple10): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple7.concat(other: Tuple11): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple7.concat(other: Tuple12): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple7.concat(other: Tuple13): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple7.concat(other: Tuple14): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun Tuple7.concat(other: Tuple15): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +infix fun EmptyTuple.concat(other: Tuple8): Tuple8 = other.copy() +infix fun Tuple8.concat(other: EmptyTuple): Tuple8 = this.copy() +infix fun Tuple8.concat(other: Tuple1): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1()) +infix fun Tuple8.concat(other: Tuple2): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2()) +infix fun Tuple8.concat(other: Tuple3): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3()) +infix fun Tuple8.concat(other: Tuple4): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple8.concat(other: Tuple5): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple8.concat(other: Tuple6): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple8.concat(other: Tuple7): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple8.concat(other: Tuple8): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple8.concat(other: Tuple9): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple8.concat(other: Tuple10): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple8.concat(other: Tuple11): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple8.concat(other: Tuple12): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple8.concat(other: Tuple13): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun Tuple8.concat(other: Tuple14): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +infix fun EmptyTuple.concat(other: Tuple9): Tuple9 = other.copy() +infix fun Tuple9.concat(other: EmptyTuple): Tuple9 = this.copy() +infix fun Tuple9.concat(other: Tuple1): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1()) +infix fun Tuple9.concat(other: Tuple2): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2()) +infix fun Tuple9.concat(other: Tuple3): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3()) +infix fun Tuple9.concat(other: Tuple4): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple9.concat(other: Tuple5): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple9.concat(other: Tuple6): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple9.concat(other: Tuple7): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple9.concat(other: Tuple8): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple9.concat(other: Tuple9): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple9.concat(other: Tuple10): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple9.concat(other: Tuple11): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple9.concat(other: Tuple12): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun Tuple9.concat(other: Tuple13): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +infix fun EmptyTuple.concat(other: Tuple10): Tuple10 = other.copy() +infix fun Tuple10.concat(other: EmptyTuple): Tuple10 = this.copy() +infix fun Tuple10.concat(other: Tuple1): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1()) +infix fun Tuple10.concat(other: Tuple2): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2()) +infix fun Tuple10.concat(other: Tuple3): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3()) +infix fun Tuple10.concat(other: Tuple4): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple10.concat(other: Tuple5): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple10.concat(other: Tuple6): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple10.concat(other: Tuple7): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple10.concat(other: Tuple8): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple10.concat(other: Tuple9): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple10.concat(other: Tuple10): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple10.concat(other: Tuple11): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun Tuple10.concat(other: Tuple12): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +infix fun EmptyTuple.concat(other: Tuple11): Tuple11 = other.copy() +infix fun Tuple11.concat(other: EmptyTuple): Tuple11 = this.copy() +infix fun Tuple11.concat(other: Tuple1): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1()) +infix fun Tuple11.concat(other: Tuple2): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2()) +infix fun Tuple11.concat(other: Tuple3): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3()) +infix fun Tuple11.concat(other: Tuple4): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple11.concat(other: Tuple5): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple11.concat(other: Tuple6): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple11.concat(other: Tuple7): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple11.concat(other: Tuple8): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple11.concat(other: Tuple9): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple11.concat(other: Tuple10): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun Tuple11.concat(other: Tuple11): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +infix fun EmptyTuple.concat(other: Tuple12): Tuple12 = other.copy() +infix fun Tuple12.concat(other: EmptyTuple): Tuple12 = this.copy() +infix fun Tuple12.concat(other: Tuple1): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1()) +infix fun Tuple12.concat(other: Tuple2): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2()) +infix fun Tuple12.concat(other: Tuple3): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3()) +infix fun Tuple12.concat(other: Tuple4): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple12.concat(other: Tuple5): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple12.concat(other: Tuple6): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple12.concat(other: Tuple7): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple12.concat(other: Tuple8): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple12.concat(other: Tuple9): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun Tuple12.concat(other: Tuple10): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +infix fun EmptyTuple.concat(other: Tuple13): Tuple13 = other.copy() +infix fun Tuple13.concat(other: EmptyTuple): Tuple13 = this.copy() +infix fun Tuple13.concat(other: Tuple1): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1()) +infix fun Tuple13.concat(other: Tuple2): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2()) +infix fun Tuple13.concat(other: Tuple3): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3()) +infix fun Tuple13.concat(other: Tuple4): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple13.concat(other: Tuple5): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple13.concat(other: Tuple6): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple13.concat(other: Tuple7): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple13.concat(other: Tuple8): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun Tuple13.concat(other: Tuple9): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +infix fun EmptyTuple.concat(other: Tuple14): Tuple14 = other.copy() +infix fun Tuple14.concat(other: EmptyTuple): Tuple14 = this.copy() +infix fun Tuple14.concat(other: Tuple1): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1()) +infix fun Tuple14.concat(other: Tuple2): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2()) +infix fun Tuple14.concat(other: Tuple3): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3()) +infix fun Tuple14.concat(other: Tuple4): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple14.concat(other: Tuple5): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple14.concat(other: Tuple6): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple14.concat(other: Tuple7): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun Tuple14.concat(other: Tuple8): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +infix fun EmptyTuple.concat(other: Tuple15): Tuple15 = other.copy() +infix fun Tuple15.concat(other: EmptyTuple): Tuple15 = this.copy() +infix fun Tuple15.concat(other: Tuple1): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1()) +infix fun Tuple15.concat(other: Tuple2): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2()) +infix fun Tuple15.concat(other: Tuple3): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3()) +infix fun Tuple15.concat(other: Tuple4): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple15.concat(other: Tuple5): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple15.concat(other: Tuple6): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun Tuple15.concat(other: Tuple7): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +infix fun EmptyTuple.concat(other: Tuple16): Tuple16 = other.copy() +infix fun Tuple16.concat(other: EmptyTuple): Tuple16 = this.copy() +infix fun Tuple16.concat(other: Tuple1): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1()) +infix fun Tuple16.concat(other: Tuple2): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2()) +infix fun Tuple16.concat(other: Tuple3): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3()) +infix fun Tuple16.concat(other: Tuple4): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple16.concat(other: Tuple5): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun Tuple16.concat(other: Tuple6): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +infix fun EmptyTuple.concat(other: Tuple17): Tuple17 = other.copy() +infix fun Tuple17.concat(other: EmptyTuple): Tuple17 = this.copy() +infix fun Tuple17.concat(other: Tuple1): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1()) +infix fun Tuple17.concat(other: Tuple2): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2()) +infix fun Tuple17.concat(other: Tuple3): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3()) +infix fun Tuple17.concat(other: Tuple4): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3(), other._4()) +infix fun Tuple17.concat(other: Tuple5): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3(), other._4(), other._5()) +infix fun EmptyTuple.concat(other: Tuple18): Tuple18 = other.copy() +infix fun Tuple18.concat(other: EmptyTuple): Tuple18 = this.copy() +infix fun Tuple18.concat(other: Tuple1): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1()) +infix fun Tuple18.concat(other: Tuple2): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2()) +infix fun Tuple18.concat(other: Tuple3): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2(), other._3()) +infix fun Tuple18.concat(other: Tuple4): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2(), other._3(), other._4()) +infix fun EmptyTuple.concat(other: Tuple19): Tuple19 = other.copy() +infix fun Tuple19.concat(other: EmptyTuple): Tuple19 = this.copy() +infix fun Tuple19.concat(other: Tuple1): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1()) +infix fun Tuple19.concat(other: Tuple2): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1(), other._2()) +infix fun Tuple19.concat(other: Tuple3): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1(), other._2(), other._3()) +infix fun EmptyTuple.concat(other: Tuple20): Tuple20 = other.copy() +infix fun Tuple20.concat(other: EmptyTuple): Tuple20 = this.copy() +infix fun Tuple20.concat(other: Tuple1): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), other._1()) +infix fun Tuple20.concat(other: Tuple2): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), other._1(), other._2()) +infix fun EmptyTuple.concat(other: Tuple21): Tuple21 = other.copy() +infix fun Tuple21.concat(other: EmptyTuple): Tuple21 = this.copy() +infix fun Tuple21.concat(other: Tuple1): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), other._1()) +infix fun EmptyTuple.concat(other: Tuple22): Tuple22 = other.copy() +infix fun Tuple22.concat(other: EmptyTuple): Tuple22 = this.copy() + +operator fun EmptyTuple.plus(other: Tuple1): Tuple1 = other.copy() +operator fun Tuple1.plus(other: EmptyTuple): Tuple1 = this.copy() +operator fun Tuple1.plus(other: Tuple1): Tuple2 = Tuple2(this._1(), other._1()) +operator fun Tuple1.plus(other: Tuple2): Tuple3 = Tuple3(this._1(), other._1(), other._2()) +operator fun Tuple1.plus(other: Tuple3): Tuple4 = Tuple4(this._1(), other._1(), other._2(), other._3()) +operator fun Tuple1.plus(other: Tuple4): Tuple5 = Tuple5(this._1(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple1.plus(other: Tuple5): Tuple6 = Tuple6(this._1(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple1.plus(other: Tuple6): Tuple7 = Tuple7(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple1.plus(other: Tuple7): Tuple8 = Tuple8(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple1.plus(other: Tuple8): Tuple9 = Tuple9(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple1.plus(other: Tuple9): Tuple10 = Tuple10(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple1.plus(other: Tuple10): Tuple11 = Tuple11(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple1.plus(other: Tuple11): Tuple12 = Tuple12(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple1.plus(other: Tuple12): Tuple13 = Tuple13(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple1.plus(other: Tuple13): Tuple14 = Tuple14(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple1.plus(other: Tuple14): Tuple15 = Tuple15(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple1.plus(other: Tuple15): Tuple16 = Tuple16(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple1.plus(other: Tuple16): Tuple17 = Tuple17(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun Tuple1.plus(other: Tuple17): Tuple18 = Tuple18(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +operator fun Tuple1.plus(other: Tuple18): Tuple19 = Tuple19(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +operator fun Tuple1.plus(other: Tuple19): Tuple20 = Tuple20(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +operator fun Tuple1.plus(other: Tuple20): Tuple21 = Tuple21(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20()) +operator fun Tuple1.plus(other: Tuple21): Tuple22 = Tuple22(this._1(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20(), other._21()) +operator fun EmptyTuple.plus(other: Tuple2): Tuple2 = other.copy() +operator fun Tuple2.plus(other: EmptyTuple): Tuple2 = this.copy() +operator fun Tuple2.plus(other: Tuple1): Tuple3 = Tuple3(this._1(), this._2(), other._1()) +operator fun Tuple2.plus(other: Tuple2): Tuple4 = Tuple4(this._1(), this._2(), other._1(), other._2()) +operator fun Tuple2.plus(other: Tuple3): Tuple5 = Tuple5(this._1(), this._2(), other._1(), other._2(), other._3()) +operator fun Tuple2.plus(other: Tuple4): Tuple6 = Tuple6(this._1(), this._2(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple2.plus(other: Tuple5): Tuple7 = Tuple7(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple2.plus(other: Tuple6): Tuple8 = Tuple8(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple2.plus(other: Tuple7): Tuple9 = Tuple9(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple2.plus(other: Tuple8): Tuple10 = Tuple10(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple2.plus(other: Tuple9): Tuple11 = Tuple11(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple2.plus(other: Tuple10): Tuple12 = Tuple12(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple2.plus(other: Tuple11): Tuple13 = Tuple13(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple2.plus(other: Tuple12): Tuple14 = Tuple14(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple2.plus(other: Tuple13): Tuple15 = Tuple15(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple2.plus(other: Tuple14): Tuple16 = Tuple16(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple2.plus(other: Tuple15): Tuple17 = Tuple17(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple2.plus(other: Tuple16): Tuple18 = Tuple18(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun Tuple2.plus(other: Tuple17): Tuple19 = Tuple19(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +operator fun Tuple2.plus(other: Tuple18): Tuple20 = Tuple20(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +operator fun Tuple2.plus(other: Tuple19): Tuple21 = Tuple21(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +operator fun Tuple2.plus(other: Tuple20): Tuple22 = Tuple22(this._1(), this._2(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19(), other._20()) +operator fun EmptyTuple.plus(other: Tuple3): Tuple3 = other.copy() +operator fun Tuple3.plus(other: EmptyTuple): Tuple3 = this.copy() +operator fun Tuple3.plus(other: Tuple1): Tuple4 = Tuple4(this._1(), this._2(), this._3(), other._1()) +operator fun Tuple3.plus(other: Tuple2): Tuple5 = Tuple5(this._1(), this._2(), this._3(), other._1(), other._2()) +operator fun Tuple3.plus(other: Tuple3): Tuple6 = Tuple6(this._1(), this._2(), this._3(), other._1(), other._2(), other._3()) +operator fun Tuple3.plus(other: Tuple4): Tuple7 = Tuple7(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple3.plus(other: Tuple5): Tuple8 = Tuple8(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple3.plus(other: Tuple6): Tuple9 = Tuple9(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple3.plus(other: Tuple7): Tuple10 = Tuple10(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple3.plus(other: Tuple8): Tuple11 = Tuple11(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple3.plus(other: Tuple9): Tuple12 = Tuple12(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple3.plus(other: Tuple10): Tuple13 = Tuple13(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple3.plus(other: Tuple11): Tuple14 = Tuple14(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple3.plus(other: Tuple12): Tuple15 = Tuple15(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple3.plus(other: Tuple13): Tuple16 = Tuple16(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple3.plus(other: Tuple14): Tuple17 = Tuple17(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple3.plus(other: Tuple15): Tuple18 = Tuple18(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple3.plus(other: Tuple16): Tuple19 = Tuple19(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun Tuple3.plus(other: Tuple17): Tuple20 = Tuple20(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +operator fun Tuple3.plus(other: Tuple18): Tuple21 = Tuple21(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +operator fun Tuple3.plus(other: Tuple19): Tuple22 = Tuple22(this._1(), this._2(), this._3(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18(), other._19()) +operator fun EmptyTuple.plus(other: Tuple4): Tuple4 = other.copy() +operator fun Tuple4.plus(other: EmptyTuple): Tuple4 = this.copy() +operator fun Tuple4.plus(other: Tuple1): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), other._1()) +operator fun Tuple4.plus(other: Tuple2): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), other._1(), other._2()) +operator fun Tuple4.plus(other: Tuple3): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3()) +operator fun Tuple4.plus(other: Tuple4): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple4.plus(other: Tuple5): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple4.plus(other: Tuple6): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple4.plus(other: Tuple7): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple4.plus(other: Tuple8): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple4.plus(other: Tuple9): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple4.plus(other: Tuple10): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple4.plus(other: Tuple11): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple4.plus(other: Tuple12): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple4.plus(other: Tuple13): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple4.plus(other: Tuple14): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple4.plus(other: Tuple15): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple4.plus(other: Tuple16): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun Tuple4.plus(other: Tuple17): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +operator fun Tuple4.plus(other: Tuple18): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17(), other._18()) +operator fun EmptyTuple.plus(other: Tuple5): Tuple5 = other.copy() +operator fun Tuple5.plus(other: EmptyTuple): Tuple5 = this.copy() +operator fun Tuple5.plus(other: Tuple1): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), other._1()) +operator fun Tuple5.plus(other: Tuple2): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2()) +operator fun Tuple5.plus(other: Tuple3): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3()) +operator fun Tuple5.plus(other: Tuple4): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple5.plus(other: Tuple5): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple5.plus(other: Tuple6): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple5.plus(other: Tuple7): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple5.plus(other: Tuple8): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple5.plus(other: Tuple9): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple5.plus(other: Tuple10): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple5.plus(other: Tuple11): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple5.plus(other: Tuple12): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple5.plus(other: Tuple13): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple5.plus(other: Tuple14): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple5.plus(other: Tuple15): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple5.plus(other: Tuple16): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun Tuple5.plus(other: Tuple17): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16(), other._17()) +operator fun EmptyTuple.plus(other: Tuple6): Tuple6 = other.copy() +operator fun Tuple6.plus(other: EmptyTuple): Tuple6 = this.copy() +operator fun Tuple6.plus(other: Tuple1): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1()) +operator fun Tuple6.plus(other: Tuple2): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2()) +operator fun Tuple6.plus(other: Tuple3): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3()) +operator fun Tuple6.plus(other: Tuple4): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple6.plus(other: Tuple5): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple6.plus(other: Tuple6): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple6.plus(other: Tuple7): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple6.plus(other: Tuple8): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple6.plus(other: Tuple9): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple6.plus(other: Tuple10): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple6.plus(other: Tuple11): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple6.plus(other: Tuple12): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple6.plus(other: Tuple13): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple6.plus(other: Tuple14): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple6.plus(other: Tuple15): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun Tuple6.plus(other: Tuple16): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15(), other._16()) +operator fun EmptyTuple.plus(other: Tuple7): Tuple7 = other.copy() +operator fun Tuple7.plus(other: EmptyTuple): Tuple7 = this.copy() +operator fun Tuple7.plus(other: Tuple1): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1()) +operator fun Tuple7.plus(other: Tuple2): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2()) +operator fun Tuple7.plus(other: Tuple3): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3()) +operator fun Tuple7.plus(other: Tuple4): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple7.plus(other: Tuple5): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple7.plus(other: Tuple6): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple7.plus(other: Tuple7): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple7.plus(other: Tuple8): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple7.plus(other: Tuple9): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple7.plus(other: Tuple10): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple7.plus(other: Tuple11): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple7.plus(other: Tuple12): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple7.plus(other: Tuple13): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple7.plus(other: Tuple14): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun Tuple7.plus(other: Tuple15): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14(), other._15()) +operator fun EmptyTuple.plus(other: Tuple8): Tuple8 = other.copy() +operator fun Tuple8.plus(other: EmptyTuple): Tuple8 = this.copy() +operator fun Tuple8.plus(other: Tuple1): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1()) +operator fun Tuple8.plus(other: Tuple2): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2()) +operator fun Tuple8.plus(other: Tuple3): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3()) +operator fun Tuple8.plus(other: Tuple4): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple8.plus(other: Tuple5): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple8.plus(other: Tuple6): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple8.plus(other: Tuple7): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple8.plus(other: Tuple8): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple8.plus(other: Tuple9): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple8.plus(other: Tuple10): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple8.plus(other: Tuple11): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple8.plus(other: Tuple12): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple8.plus(other: Tuple13): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun Tuple8.plus(other: Tuple14): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13(), other._14()) +operator fun EmptyTuple.plus(other: Tuple9): Tuple9 = other.copy() +operator fun Tuple9.plus(other: EmptyTuple): Tuple9 = this.copy() +operator fun Tuple9.plus(other: Tuple1): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1()) +operator fun Tuple9.plus(other: Tuple2): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2()) +operator fun Tuple9.plus(other: Tuple3): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3()) +operator fun Tuple9.plus(other: Tuple4): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple9.plus(other: Tuple5): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple9.plus(other: Tuple6): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple9.plus(other: Tuple7): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple9.plus(other: Tuple8): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple9.plus(other: Tuple9): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple9.plus(other: Tuple10): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple9.plus(other: Tuple11): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple9.plus(other: Tuple12): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun Tuple9.plus(other: Tuple13): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12(), other._13()) +operator fun EmptyTuple.plus(other: Tuple10): Tuple10 = other.copy() +operator fun Tuple10.plus(other: EmptyTuple): Tuple10 = this.copy() +operator fun Tuple10.plus(other: Tuple1): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1()) +operator fun Tuple10.plus(other: Tuple2): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2()) +operator fun Tuple10.plus(other: Tuple3): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3()) +operator fun Tuple10.plus(other: Tuple4): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple10.plus(other: Tuple5): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple10.plus(other: Tuple6): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple10.plus(other: Tuple7): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple10.plus(other: Tuple8): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple10.plus(other: Tuple9): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple10.plus(other: Tuple10): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple10.plus(other: Tuple11): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun Tuple10.plus(other: Tuple12): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11(), other._12()) +operator fun EmptyTuple.plus(other: Tuple11): Tuple11 = other.copy() +operator fun Tuple11.plus(other: EmptyTuple): Tuple11 = this.copy() +operator fun Tuple11.plus(other: Tuple1): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1()) +operator fun Tuple11.plus(other: Tuple2): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2()) +operator fun Tuple11.plus(other: Tuple3): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3()) +operator fun Tuple11.plus(other: Tuple4): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple11.plus(other: Tuple5): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple11.plus(other: Tuple6): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple11.plus(other: Tuple7): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple11.plus(other: Tuple8): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple11.plus(other: Tuple9): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple11.plus(other: Tuple10): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun Tuple11.plus(other: Tuple11): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10(), other._11()) +operator fun EmptyTuple.plus(other: Tuple12): Tuple12 = other.copy() +operator fun Tuple12.plus(other: EmptyTuple): Tuple12 = this.copy() +operator fun Tuple12.plus(other: Tuple1): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1()) +operator fun Tuple12.plus(other: Tuple2): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2()) +operator fun Tuple12.plus(other: Tuple3): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3()) +operator fun Tuple12.plus(other: Tuple4): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple12.plus(other: Tuple5): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple12.plus(other: Tuple6): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple12.plus(other: Tuple7): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple12.plus(other: Tuple8): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple12.plus(other: Tuple9): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun Tuple12.plus(other: Tuple10): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9(), other._10()) +operator fun EmptyTuple.plus(other: Tuple13): Tuple13 = other.copy() +operator fun Tuple13.plus(other: EmptyTuple): Tuple13 = this.copy() +operator fun Tuple13.plus(other: Tuple1): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1()) +operator fun Tuple13.plus(other: Tuple2): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2()) +operator fun Tuple13.plus(other: Tuple3): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3()) +operator fun Tuple13.plus(other: Tuple4): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple13.plus(other: Tuple5): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple13.plus(other: Tuple6): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple13.plus(other: Tuple7): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple13.plus(other: Tuple8): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun Tuple13.plus(other: Tuple9): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8(), other._9()) +operator fun EmptyTuple.plus(other: Tuple14): Tuple14 = other.copy() +operator fun Tuple14.plus(other: EmptyTuple): Tuple14 = this.copy() +operator fun Tuple14.plus(other: Tuple1): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1()) +operator fun Tuple14.plus(other: Tuple2): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2()) +operator fun Tuple14.plus(other: Tuple3): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3()) +operator fun Tuple14.plus(other: Tuple4): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple14.plus(other: Tuple5): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple14.plus(other: Tuple6): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple14.plus(other: Tuple7): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun Tuple14.plus(other: Tuple8): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7(), other._8()) +operator fun EmptyTuple.plus(other: Tuple15): Tuple15 = other.copy() +operator fun Tuple15.plus(other: EmptyTuple): Tuple15 = this.copy() +operator fun Tuple15.plus(other: Tuple1): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1()) +operator fun Tuple15.plus(other: Tuple2): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2()) +operator fun Tuple15.plus(other: Tuple3): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3()) +operator fun Tuple15.plus(other: Tuple4): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple15.plus(other: Tuple5): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple15.plus(other: Tuple6): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun Tuple15.plus(other: Tuple7): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6(), other._7()) +operator fun EmptyTuple.plus(other: Tuple16): Tuple16 = other.copy() +operator fun Tuple16.plus(other: EmptyTuple): Tuple16 = this.copy() +operator fun Tuple16.plus(other: Tuple1): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1()) +operator fun Tuple16.plus(other: Tuple2): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2()) +operator fun Tuple16.plus(other: Tuple3): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3()) +operator fun Tuple16.plus(other: Tuple4): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple16.plus(other: Tuple5): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun Tuple16.plus(other: Tuple6): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other._1(), other._2(), other._3(), other._4(), other._5(), other._6()) +operator fun EmptyTuple.plus(other: Tuple17): Tuple17 = other.copy() +operator fun Tuple17.plus(other: EmptyTuple): Tuple17 = this.copy() +operator fun Tuple17.plus(other: Tuple1): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1()) +operator fun Tuple17.plus(other: Tuple2): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2()) +operator fun Tuple17.plus(other: Tuple3): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3()) +operator fun Tuple17.plus(other: Tuple4): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3(), other._4()) +operator fun Tuple17.plus(other: Tuple5): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other._1(), other._2(), other._3(), other._4(), other._5()) +operator fun EmptyTuple.plus(other: Tuple18): Tuple18 = other.copy() +operator fun Tuple18.plus(other: EmptyTuple): Tuple18 = this.copy() +operator fun Tuple18.plus(other: Tuple1): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1()) +operator fun Tuple18.plus(other: Tuple2): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2()) +operator fun Tuple18.plus(other: Tuple3): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2(), other._3()) +operator fun Tuple18.plus(other: Tuple4): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other._1(), other._2(), other._3(), other._4()) +operator fun EmptyTuple.plus(other: Tuple19): Tuple19 = other.copy() +operator fun Tuple19.plus(other: EmptyTuple): Tuple19 = this.copy() +operator fun Tuple19.plus(other: Tuple1): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1()) +operator fun Tuple19.plus(other: Tuple2): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1(), other._2()) +operator fun Tuple19.plus(other: Tuple3): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other._1(), other._2(), other._3()) +operator fun EmptyTuple.plus(other: Tuple20): Tuple20 = other.copy() +operator fun Tuple20.plus(other: EmptyTuple): Tuple20 = this.copy() +operator fun Tuple20.plus(other: Tuple1): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), other._1()) +operator fun Tuple20.plus(other: Tuple2): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), other._1(), other._2()) +operator fun EmptyTuple.plus(other: Tuple21): Tuple21 = other.copy() +operator fun Tuple21.plus(other: EmptyTuple): Tuple21 = this.copy() +operator fun Tuple21.plus(other: Tuple1): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), other._1()) +operator fun EmptyTuple.plus(other: Tuple22): Tuple22 = other.copy() +operator fun Tuple22.plus(other: EmptyTuple): Tuple22 = this.copy() + diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleCopy.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleCopy.kt new file mode 100644 index 00000000..8d5ea7ac --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleCopy.kt @@ -0,0 +1,48 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("EXTENSION_SHADOWED_BY_MEMBER") + +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +fun EmptyTuple.copy(): EmptyTuple = EmptyTuple +fun Tuple1.copy(_1: T1 = this._1()): Tuple1 = Tuple1(_1) +fun Tuple2.copy(_1: T1 = this._1(), _2: T2 = this._2()): Tuple2 = Tuple2(_1, _2) +fun Tuple3.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3()): Tuple3 = Tuple3(_1, _2, _3) +fun Tuple4.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4()): Tuple4 = Tuple4(_1, _2, _3, _4) +fun Tuple5.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5()): Tuple5 = Tuple5(_1, _2, _3, _4, _5) +fun Tuple6.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6()): Tuple6 = Tuple6(_1, _2, _3, _4, _5, _6) +fun Tuple7.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7()): Tuple7 = Tuple7(_1, _2, _3, _4, _5, _6, _7) +fun Tuple8.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8()): Tuple8 = Tuple8(_1, _2, _3, _4, _5, _6, _7, _8) +fun Tuple9.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9()): Tuple9 = Tuple9(_1, _2, _3, _4, _5, _6, _7, _8, _9) +fun Tuple10.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10()): Tuple10 = Tuple10(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10) +fun Tuple11.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11()): Tuple11 = Tuple11(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11) +fun Tuple12.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12()): Tuple12 = Tuple12(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12) +fun Tuple13.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13()): Tuple13 = Tuple13(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13) +fun Tuple14.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14()): Tuple14 = Tuple14(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14) +fun Tuple15.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15()): Tuple15 = Tuple15(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15) +fun Tuple16.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16()): Tuple16 = Tuple16(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16) +fun Tuple17.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17()): Tuple17 = Tuple17(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17) +fun Tuple18.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17(), _18: T18 = this._18()): Tuple18 = Tuple18(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18) +fun Tuple19.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17(), _18: T18 = this._18(), _19: T19 = this._19()): Tuple19 = Tuple19(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19) +fun Tuple20.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17(), _18: T18 = this._18(), _19: T19 = this._19(), _20: T20 = this._20()): Tuple20 = Tuple20(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20) +fun Tuple21.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17(), _18: T18 = this._18(), _19: T19 = this._19(), _20: T20 = this._20(), _21: T21 = this._21()): Tuple21 = Tuple21(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21) +fun Tuple22.copy(_1: T1 = this._1(), _2: T2 = this._2(), _3: T3 = this._3(), _4: T4 = this._4(), _5: T5 = this._5(), _6: T6 = this._6(), _7: T7 = this._7(), _8: T8 = this._8(), _9: T9 = this._9(), _10: T10 = this._10(), _11: T11 = this._11(), _12: T12 = this._12(), _13: T13 = this._13(), _14: T14 = this._14(), _15: T15 = this._15(), _16: T16 = this._16(), _17: T17 = this._17(), _18: T18 = this._18(), _19: T19 = this._19(), _20: T20 = this._20(), _21: T21 = this._21(), _22: T22 = this._22()): Tuple22 = Tuple22(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleDrop.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleDrop.kt new file mode 100644 index 00000000..e8ed8706 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleDrop.kt @@ -0,0 +1,587 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +/** + * This file contains all functions to drop N items from the beginning or end of a Tuple. + * If all items are dropped, the result will be [EmptyTuple]. + * + * For example: + * ```kotlin + * tupleOf(1, 2, 3, 4).drop2() == tupleOf(3, 4) + * tupleOf(1, 2, 3, 4).dropLast2() == tupleOf(1, 2) + * ``` + */ + +fun Tuple1.drop0(): Tuple1 = Tuple1(this._1()) +fun Tuple1<*>.drop1(): EmptyTuple = EmptyTuple +fun Tuple2.drop0(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple2<*, T2>.drop1(): Tuple1 = Tuple1(this._2()) +fun Tuple2<*, *>.drop2(): EmptyTuple = EmptyTuple +fun Tuple3.drop0(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple3<*, T2, T3>.drop1(): Tuple2 = Tuple2(this._2(), this._3()) +fun Tuple3<*, *, T3>.drop2(): Tuple1 = Tuple1(this._3()) +fun Tuple3<*, *, *>.drop3(): EmptyTuple = EmptyTuple +fun Tuple4.drop0(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple4<*, T2, T3, T4>.drop1(): Tuple3 = Tuple3(this._2(), this._3(), this._4()) +fun Tuple4<*, *, T3, T4>.drop2(): Tuple2 = Tuple2(this._3(), this._4()) +fun Tuple4<*, *, *, T4>.drop3(): Tuple1 = Tuple1(this._4()) +fun Tuple4<*, *, *, *>.drop4(): EmptyTuple = EmptyTuple +fun Tuple5.drop0(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple5<*, T2, T3, T4, T5>.drop1(): Tuple4 = Tuple4(this._2(), this._3(), this._4(), this._5()) +fun Tuple5<*, *, T3, T4, T5>.drop2(): Tuple3 = Tuple3(this._3(), this._4(), this._5()) +fun Tuple5<*, *, *, T4, T5>.drop3(): Tuple2 = Tuple2(this._4(), this._5()) +fun Tuple5<*, *, *, *, T5>.drop4(): Tuple1 = Tuple1(this._5()) +fun Tuple5<*, *, *, *, *>.drop5(): EmptyTuple = EmptyTuple +fun Tuple6.drop0(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, T2, T3, T4, T5, T6>.drop1(): Tuple5 = Tuple5(this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, *, T3, T4, T5, T6>.drop2(): Tuple4 = Tuple4(this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, *, *, T4, T5, T6>.drop3(): Tuple3 = Tuple3(this._4(), this._5(), this._6()) +fun Tuple6<*, *, *, *, T5, T6>.drop4(): Tuple2 = Tuple2(this._5(), this._6()) +fun Tuple6<*, *, *, *, *, T6>.drop5(): Tuple1 = Tuple1(this._6()) +fun Tuple6<*, *, *, *, *, *>.drop6(): EmptyTuple = EmptyTuple +fun Tuple7.drop0(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, T2, T3, T4, T5, T6, T7>.drop1(): Tuple6 = Tuple6(this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, T3, T4, T5, T6, T7>.drop2(): Tuple5 = Tuple5(this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, T4, T5, T6, T7>.drop3(): Tuple4 = Tuple4(this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, *, T5, T6, T7>.drop4(): Tuple3 = Tuple3(this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, *, *, T6, T7>.drop5(): Tuple2 = Tuple2(this._6(), this._7()) +fun Tuple7<*, *, *, *, *, *, T7>.drop6(): Tuple1 = Tuple1(this._7()) +fun Tuple7<*, *, *, *, *, *, *>.drop7(): EmptyTuple = EmptyTuple +fun Tuple8.drop0(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, T2, T3, T4, T5, T6, T7, T8>.drop1(): Tuple7 = Tuple7(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, T3, T4, T5, T6, T7, T8>.drop2(): Tuple6 = Tuple6(this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, T4, T5, T6, T7, T8>.drop3(): Tuple5 = Tuple5(this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, T5, T6, T7, T8>.drop4(): Tuple4 = Tuple4(this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, *, T6, T7, T8>.drop5(): Tuple3 = Tuple3(this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, *, *, T7, T8>.drop6(): Tuple2 = Tuple2(this._7(), this._8()) +fun Tuple8<*, *, *, *, *, *, *, T8>.drop7(): Tuple1 = Tuple1(this._8()) +fun Tuple8<*, *, *, *, *, *, *, *>.drop8(): EmptyTuple = EmptyTuple +fun Tuple9.drop0(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, T2, T3, T4, T5, T6, T7, T8, T9>.drop1(): Tuple8 = Tuple8(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, T3, T4, T5, T6, T7, T8, T9>.drop2(): Tuple7 = Tuple7(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, T4, T5, T6, T7, T8, T9>.drop3(): Tuple6 = Tuple6(this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, T5, T6, T7, T8, T9>.drop4(): Tuple5 = Tuple5(this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, T6, T7, T8, T9>.drop5(): Tuple4 = Tuple4(this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, T7, T8, T9>.drop6(): Tuple3 = Tuple3(this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, *, T8, T9>.drop7(): Tuple2 = Tuple2(this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, *, *, T9>.drop8(): Tuple1 = Tuple1(this._9()) +fun Tuple9<*, *, *, *, *, *, *, *, *>.drop9(): EmptyTuple = EmptyTuple +fun Tuple10.drop0(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, T2, T3, T4, T5, T6, T7, T8, T9, T10>.drop1(): Tuple9 = Tuple9(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, T3, T4, T5, T6, T7, T8, T9, T10>.drop2(): Tuple8 = Tuple8(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, T4, T5, T6, T7, T8, T9, T10>.drop3(): Tuple7 = Tuple7(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, T5, T6, T7, T8, T9, T10>.drop4(): Tuple6 = Tuple6(this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, T6, T7, T8, T9, T10>.drop5(): Tuple5 = Tuple5(this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, T7, T8, T9, T10>.drop6(): Tuple4 = Tuple4(this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, T8, T9, T10>.drop7(): Tuple3 = Tuple3(this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, *, T9, T10>.drop8(): Tuple2 = Tuple2(this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, *, *, T10>.drop9(): Tuple1 = Tuple1(this._10()) +fun Tuple10<*, *, *, *, *, *, *, *, *, *>.drop10(): EmptyTuple = EmptyTuple +fun Tuple11.drop0(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.drop1(): Tuple10 = Tuple10(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11>.drop2(): Tuple9 = Tuple9(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11>.drop3(): Tuple8 = Tuple8(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, T5, T6, T7, T8, T9, T10, T11>.drop4(): Tuple7 = Tuple7(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, T6, T7, T8, T9, T10, T11>.drop5(): Tuple6 = Tuple6(this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, T7, T8, T9, T10, T11>.drop6(): Tuple5 = Tuple5(this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, T8, T9, T10, T11>.drop7(): Tuple4 = Tuple4(this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, T9, T10, T11>.drop8(): Tuple3 = Tuple3(this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, *, T10, T11>.drop9(): Tuple2 = Tuple2(this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, T11>.drop10(): Tuple1 = Tuple1(this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.drop11(): EmptyTuple = EmptyTuple +fun Tuple12.drop0(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.drop1(): Tuple11 = Tuple11(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.drop2(): Tuple10 = Tuple10(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12>.drop3(): Tuple9 = Tuple9(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12>.drop4(): Tuple8 = Tuple8(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12>.drop5(): Tuple7 = Tuple7(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12>.drop6(): Tuple6 = Tuple6(this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, T8, T9, T10, T11, T12>.drop7(): Tuple5 = Tuple5(this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, T9, T10, T11, T12>.drop8(): Tuple4 = Tuple4(this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, T10, T11, T12>.drop9(): Tuple3 = Tuple3(this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, T11, T12>.drop10(): Tuple2 = Tuple2(this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, T12>.drop11(): Tuple1 = Tuple1(this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.drop12(): EmptyTuple = EmptyTuple +fun Tuple13.drop0(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.drop1(): Tuple12 = Tuple12(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.drop2(): Tuple11 = Tuple11(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.drop3(): Tuple10 = Tuple10(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13>.drop4(): Tuple9 = Tuple9(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13>.drop5(): Tuple8 = Tuple8(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13>.drop6(): Tuple7 = Tuple7(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13>.drop7(): Tuple6 = Tuple6(this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13>.drop8(): Tuple5 = Tuple5(this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13>.drop9(): Tuple4 = Tuple4(this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, T11, T12, T13>.drop10(): Tuple3 = Tuple3(this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, T12, T13>.drop11(): Tuple2 = Tuple2(this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, T13>.drop12(): Tuple1 = Tuple1(this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.drop13(): EmptyTuple = EmptyTuple +fun Tuple14.drop0(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.drop1(): Tuple13 = Tuple13(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.drop2(): Tuple12 = Tuple12(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.drop3(): Tuple11 = Tuple11(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.drop4(): Tuple10 = Tuple10(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14>.drop5(): Tuple9 = Tuple9(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14>.drop6(): Tuple8 = Tuple8(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14>.drop7(): Tuple7 = Tuple7(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14>.drop8(): Tuple6 = Tuple6(this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14>.drop9(): Tuple5 = Tuple5(this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14>.drop10(): Tuple4 = Tuple4(this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14>.drop11(): Tuple3 = Tuple3(this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14>.drop12(): Tuple2 = Tuple2(this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, T14>.drop13(): Tuple1 = Tuple1(this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop14(): EmptyTuple = EmptyTuple +fun Tuple15.drop0(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop1(): Tuple14 = Tuple14(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop2(): Tuple13 = Tuple13(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop3(): Tuple12 = Tuple12(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop4(): Tuple11 = Tuple11(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop5(): Tuple10 = Tuple10(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15>.drop6(): Tuple9 = Tuple9(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15>.drop7(): Tuple8 = Tuple8(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15>.drop8(): Tuple7 = Tuple7(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15>.drop9(): Tuple6 = Tuple6(this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15>.drop10(): Tuple5 = Tuple5(this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15>.drop11(): Tuple4 = Tuple4(this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15>.drop12(): Tuple3 = Tuple3(this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15>.drop13(): Tuple2 = Tuple2(this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15>.drop14(): Tuple1 = Tuple1(this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop15(): EmptyTuple = EmptyTuple +fun Tuple16.drop0(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop1(): Tuple15 = Tuple15(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop2(): Tuple14 = Tuple14(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop3(): Tuple13 = Tuple13(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop4(): Tuple12 = Tuple12(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop5(): Tuple11 = Tuple11(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop6(): Tuple10 = Tuple10(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16>.drop7(): Tuple9 = Tuple9(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16>.drop8(): Tuple8 = Tuple8(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16>.drop9(): Tuple7 = Tuple7(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16>.drop10(): Tuple6 = Tuple6(this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16>.drop11(): Tuple5 = Tuple5(this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16>.drop12(): Tuple4 = Tuple4(this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16>.drop13(): Tuple3 = Tuple3(this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16>.drop14(): Tuple2 = Tuple2(this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16>.drop15(): Tuple1 = Tuple1(this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop16(): EmptyTuple = EmptyTuple +fun Tuple17.drop0(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop1(): Tuple16 = Tuple16(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop2(): Tuple15 = Tuple15(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop3(): Tuple14 = Tuple14(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop4(): Tuple13 = Tuple13(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop5(): Tuple12 = Tuple12(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop6(): Tuple11 = Tuple11(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop7(): Tuple10 = Tuple10(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17>.drop8(): Tuple9 = Tuple9(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17>.drop9(): Tuple8 = Tuple8(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17>.drop10(): Tuple7 = Tuple7(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17>.drop11(): Tuple6 = Tuple6(this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17>.drop12(): Tuple5 = Tuple5(this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17>.drop13(): Tuple4 = Tuple4(this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17>.drop14(): Tuple3 = Tuple3(this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17>.drop15(): Tuple2 = Tuple2(this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17>.drop16(): Tuple1 = Tuple1(this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop17(): EmptyTuple = EmptyTuple +fun Tuple18.drop0(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop1(): Tuple17 = Tuple17(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop2(): Tuple16 = Tuple16(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop3(): Tuple15 = Tuple15(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop4(): Tuple14 = Tuple14(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop5(): Tuple13 = Tuple13(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop6(): Tuple12 = Tuple12(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop7(): Tuple11 = Tuple11(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop8(): Tuple10 = Tuple10(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18>.drop9(): Tuple9 = Tuple9(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18>.drop10(): Tuple8 = Tuple8(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18>.drop11(): Tuple7 = Tuple7(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18>.drop12(): Tuple6 = Tuple6(this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18>.drop13(): Tuple5 = Tuple5(this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18>.drop14(): Tuple4 = Tuple4(this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18>.drop15(): Tuple3 = Tuple3(this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18>.drop16(): Tuple2 = Tuple2(this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18>.drop17(): Tuple1 = Tuple1(this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop18(): EmptyTuple = EmptyTuple +fun Tuple19.drop0(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop1(): Tuple18 = Tuple18(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop2(): Tuple17 = Tuple17(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop3(): Tuple16 = Tuple16(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop4(): Tuple15 = Tuple15(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop5(): Tuple14 = Tuple14(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop6(): Tuple13 = Tuple13(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop7(): Tuple12 = Tuple12(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop8(): Tuple11 = Tuple11(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop9(): Tuple10 = Tuple10(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19>.drop10(): Tuple9 = Tuple9(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19>.drop11(): Tuple8 = Tuple8(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19>.drop12(): Tuple7 = Tuple7(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19>.drop13(): Tuple6 = Tuple6(this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19>.drop14(): Tuple5 = Tuple5(this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19>.drop15(): Tuple4 = Tuple4(this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19>.drop16(): Tuple3 = Tuple3(this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19>.drop17(): Tuple2 = Tuple2(this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19>.drop18(): Tuple1 = Tuple1(this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop19(): EmptyTuple = EmptyTuple +fun Tuple20.drop0(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop1(): Tuple19 = Tuple19(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop2(): Tuple18 = Tuple18(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop3(): Tuple17 = Tuple17(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop4(): Tuple16 = Tuple16(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop5(): Tuple15 = Tuple15(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop6(): Tuple14 = Tuple14(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop7(): Tuple13 = Tuple13(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop8(): Tuple12 = Tuple12(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop9(): Tuple11 = Tuple11(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop10(): Tuple10 = Tuple10(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20>.drop11(): Tuple9 = Tuple9(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20>.drop12(): Tuple8 = Tuple8(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20>.drop13(): Tuple7 = Tuple7(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20>.drop14(): Tuple6 = Tuple6(this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20>.drop15(): Tuple5 = Tuple5(this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20>.drop16(): Tuple4 = Tuple4(this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20>.drop17(): Tuple3 = Tuple3(this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20>.drop18(): Tuple2 = Tuple2(this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20>.drop19(): Tuple1 = Tuple1(this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop20(): EmptyTuple = EmptyTuple +fun Tuple21.drop0(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop1(): Tuple20 = Tuple20(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop2(): Tuple19 = Tuple19(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop3(): Tuple18 = Tuple18(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop4(): Tuple17 = Tuple17(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop5(): Tuple16 = Tuple16(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop6(): Tuple15 = Tuple15(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop7(): Tuple14 = Tuple14(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop8(): Tuple13 = Tuple13(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop9(): Tuple12 = Tuple12(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop10(): Tuple11 = Tuple11(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop11(): Tuple10 = Tuple10(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20, T21>.drop12(): Tuple9 = Tuple9(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20, T21>.drop13(): Tuple8 = Tuple8(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20, T21>.drop14(): Tuple7 = Tuple7(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20, T21>.drop15(): Tuple6 = Tuple6(this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20, T21>.drop16(): Tuple5 = Tuple5(this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20, T21>.drop17(): Tuple4 = Tuple4(this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20, T21>.drop18(): Tuple3 = Tuple3(this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20, T21>.drop19(): Tuple2 = Tuple2(this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T21>.drop20(): Tuple1 = Tuple1(this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop21(): EmptyTuple = EmptyTuple +fun Tuple22.drop0(): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop1(): Tuple21 = Tuple21(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop2(): Tuple20 = Tuple20(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop3(): Tuple19 = Tuple19(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop4(): Tuple18 = Tuple18(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop5(): Tuple17 = Tuple17(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop6(): Tuple16 = Tuple16(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop7(): Tuple15 = Tuple15(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop8(): Tuple14 = Tuple14(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop9(): Tuple13 = Tuple13(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop10(): Tuple12 = Tuple12(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop11(): Tuple11 = Tuple11(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop12(): Tuple10 = Tuple10(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20, T21, T22>.drop13(): Tuple9 = Tuple9(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20, T21, T22>.drop14(): Tuple8 = Tuple8(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20, T21, T22>.drop15(): Tuple7 = Tuple7(this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20, T21, T22>.drop16(): Tuple6 = Tuple6(this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20, T21, T22>.drop17(): Tuple5 = Tuple5(this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20, T21, T22>.drop18(): Tuple4 = Tuple4(this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20, T21, T22>.drop19(): Tuple3 = Tuple3(this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T21, T22>.drop20(): Tuple2 = Tuple2(this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T22>.drop21(): Tuple1 = Tuple1(this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.drop22(): EmptyTuple = EmptyTuple + + + +fun Tuple1.dropLast0(): Tuple1 = Tuple1(this._1()) +fun Tuple1<*>.dropLast1(): EmptyTuple = EmptyTuple +fun Tuple2.dropLast0(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple2.dropLast1(): Tuple1 = Tuple1(this._1()) +fun Tuple2<*, *>.dropLast2(): EmptyTuple = EmptyTuple +fun Tuple3.dropLast0(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple3.dropLast1(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple3.dropLast2(): Tuple1 = Tuple1(this._1()) +fun Tuple3<*, *, *>.dropLast3(): EmptyTuple = EmptyTuple +fun Tuple4.dropLast0(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple4.dropLast1(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple4.dropLast2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple4.dropLast3(): Tuple1 = Tuple1(this._1()) +fun Tuple4<*, *, *, *>.dropLast4(): EmptyTuple = EmptyTuple +fun Tuple5.dropLast0(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple5.dropLast1(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple5.dropLast2(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple5.dropLast3(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple5.dropLast4(): Tuple1 = Tuple1(this._1()) +fun Tuple5<*, *, *, *, *>.dropLast5(): EmptyTuple = EmptyTuple +fun Tuple6.dropLast0(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6.dropLast1(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple6.dropLast2(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple6.dropLast3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple6.dropLast4(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple6.dropLast5(): Tuple1 = Tuple1(this._1()) +fun Tuple6<*, *, *, *, *, *>.dropLast6(): EmptyTuple = EmptyTuple +fun Tuple7.dropLast0(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7.dropLast1(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple7.dropLast2(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple7.dropLast3(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple7.dropLast4(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple7.dropLast5(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple7.dropLast6(): Tuple1 = Tuple1(this._1()) +fun Tuple7<*, *, *, *, *, *, *>.dropLast7(): EmptyTuple = EmptyTuple +fun Tuple8.dropLast0(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8.dropLast1(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple8.dropLast2(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple8.dropLast3(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple8.dropLast4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple8.dropLast5(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple8.dropLast6(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple8.dropLast7(): Tuple1 = Tuple1(this._1()) +fun Tuple8<*, *, *, *, *, *, *, *>.dropLast8(): EmptyTuple = EmptyTuple +fun Tuple9.dropLast0(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9.dropLast1(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple9.dropLast2(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple9.dropLast3(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple9.dropLast4(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple9.dropLast5(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple9.dropLast6(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple9.dropLast7(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple9.dropLast8(): Tuple1 = Tuple1(this._1()) +fun Tuple9<*, *, *, *, *, *, *, *, *>.dropLast9(): EmptyTuple = EmptyTuple +fun Tuple10.dropLast0(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10.dropLast1(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple10.dropLast2(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple10.dropLast3(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple10.dropLast4(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple10.dropLast5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple10.dropLast6(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple10.dropLast7(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple10.dropLast8(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple10.dropLast9(): Tuple1 = Tuple1(this._1()) +fun Tuple10<*, *, *, *, *, *, *, *, *, *>.dropLast10(): EmptyTuple = EmptyTuple +fun Tuple11.dropLast0(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11.dropLast1(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple11.dropLast2(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple11.dropLast3(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple11.dropLast4(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple11.dropLast5(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple11.dropLast6(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple11.dropLast7(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple11.dropLast8(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple11.dropLast9(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple11.dropLast10(): Tuple1 = Tuple1(this._1()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.dropLast11(): EmptyTuple = EmptyTuple +fun Tuple12.dropLast0(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12.dropLast1(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple12.dropLast2(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple12.dropLast3(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple12.dropLast4(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple12.dropLast5(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple12.dropLast6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple12.dropLast7(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple12.dropLast8(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple12.dropLast9(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple12.dropLast10(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple12.dropLast11(): Tuple1 = Tuple1(this._1()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.dropLast12(): EmptyTuple = EmptyTuple +fun Tuple13.dropLast0(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13.dropLast1(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple13.dropLast2(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple13.dropLast3(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple13.dropLast4(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple13.dropLast5(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple13.dropLast6(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple13.dropLast7(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple13.dropLast8(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple13.dropLast9(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple13.dropLast10(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple13.dropLast11(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple13.dropLast12(): Tuple1 = Tuple1(this._1()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast13(): EmptyTuple = EmptyTuple +fun Tuple14.dropLast0(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14.dropLast1(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple14.dropLast2(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple14.dropLast3(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple14.dropLast4(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple14.dropLast5(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple14.dropLast6(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple14.dropLast7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple14.dropLast8(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple14.dropLast9(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple14.dropLast10(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple14.dropLast11(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple14.dropLast12(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple14.dropLast13(): Tuple1 = Tuple1(this._1()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast14(): EmptyTuple = EmptyTuple +fun Tuple15.dropLast0(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15.dropLast1(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple15.dropLast2(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple15.dropLast3(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple15.dropLast4(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple15.dropLast5(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple15.dropLast6(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple15.dropLast7(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple15.dropLast8(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple15.dropLast9(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple15.dropLast10(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple15.dropLast11(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple15.dropLast12(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple15.dropLast13(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple15.dropLast14(): Tuple1 = Tuple1(this._1()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast15(): EmptyTuple = EmptyTuple +fun Tuple16.dropLast0(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16.dropLast1(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple16.dropLast2(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple16.dropLast3(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple16.dropLast4(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple16.dropLast5(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple16.dropLast6(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple16.dropLast7(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple16.dropLast8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple16.dropLast9(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple16.dropLast10(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple16.dropLast11(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple16.dropLast12(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple16.dropLast13(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple16.dropLast14(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple16.dropLast15(): Tuple1 = Tuple1(this._1()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast16(): EmptyTuple = EmptyTuple +fun Tuple17.dropLast0(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17.dropLast1(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple17.dropLast2(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple17.dropLast3(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple17.dropLast4(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple17.dropLast5(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple17.dropLast6(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple17.dropLast7(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple17.dropLast8(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple17.dropLast9(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple17.dropLast10(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple17.dropLast11(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple17.dropLast12(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple17.dropLast13(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple17.dropLast14(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple17.dropLast15(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple17.dropLast16(): Tuple1 = Tuple1(this._1()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast17(): EmptyTuple = EmptyTuple +fun Tuple18.dropLast0(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18.dropLast1(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple18.dropLast2(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple18.dropLast3(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple18.dropLast4(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple18.dropLast5(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple18.dropLast6(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple18.dropLast7(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple18.dropLast8(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple18.dropLast9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple18.dropLast10(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple18.dropLast11(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple18.dropLast12(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple18.dropLast13(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple18.dropLast14(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple18.dropLast15(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple18.dropLast16(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple18.dropLast17(): Tuple1 = Tuple1(this._1()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast18(): EmptyTuple = EmptyTuple +fun Tuple19.dropLast0(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19.dropLast1(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple19.dropLast2(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple19.dropLast3(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple19.dropLast4(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple19.dropLast5(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple19.dropLast6(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple19.dropLast7(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple19.dropLast8(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple19.dropLast9(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple19.dropLast10(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple19.dropLast11(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple19.dropLast12(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple19.dropLast13(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple19.dropLast14(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple19.dropLast15(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple19.dropLast16(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple19.dropLast17(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple19.dropLast18(): Tuple1 = Tuple1(this._1()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast19(): EmptyTuple = EmptyTuple +fun Tuple20.dropLast0(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20.dropLast1(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple20.dropLast2(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple20.dropLast3(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple20.dropLast4(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple20.dropLast5(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple20.dropLast6(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple20.dropLast7(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple20.dropLast8(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple20.dropLast9(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple20.dropLast10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple20.dropLast11(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple20.dropLast12(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple20.dropLast13(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple20.dropLast14(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple20.dropLast15(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple20.dropLast16(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple20.dropLast17(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple20.dropLast18(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple20.dropLast19(): Tuple1 = Tuple1(this._1()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast20(): EmptyTuple = EmptyTuple +fun Tuple21.dropLast0(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21.dropLast1(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple21.dropLast2(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple21.dropLast3(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple21.dropLast4(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple21.dropLast5(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple21.dropLast6(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple21.dropLast7(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple21.dropLast8(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple21.dropLast9(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple21.dropLast10(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple21.dropLast11(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple21.dropLast12(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple21.dropLast13(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple21.dropLast14(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple21.dropLast15(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple21.dropLast16(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple21.dropLast17(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple21.dropLast18(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple21.dropLast19(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple21.dropLast20(): Tuple1 = Tuple1(this._1()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast21(): EmptyTuple = EmptyTuple +fun Tuple22.dropLast0(): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22.dropLast1(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple22.dropLast2(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple22.dropLast3(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple22.dropLast4(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple22.dropLast5(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple22.dropLast6(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple22.dropLast7(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple22.dropLast8(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple22.dropLast9(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple22.dropLast10(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple22.dropLast11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple22.dropLast12(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple22.dropLast13(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple22.dropLast14(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple22.dropLast15(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple22.dropLast16(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple22.dropLast17(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple22.dropLast18(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple22.dropLast19(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple22.dropLast20(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple22.dropLast21(): Tuple1 = Tuple1(this._1()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.dropLast22(): EmptyTuple = EmptyTuple diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleExtending.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleExtending.kt new file mode 100644 index 00000000..595d1883 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleExtending.kt @@ -0,0 +1,161 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("FunctionName", "RemoveExplicitTypeArguments") +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Tuple1 +import scala.Tuple2 +import scala.Tuple3 +import scala.Tuple4 +import scala.Tuple5 +import scala.Tuple6 +import scala.Tuple7 +import scala.Tuple8 +import scala.Tuple9 +import scala.Tuple10 +import scala.Tuple11 +import scala.Tuple12 +import scala.Tuple13 +import scala.Tuple14 +import scala.Tuple15 +import scala.Tuple16 +import scala.Tuple17 +import scala.Tuple18 +import scala.Tuple19 +import scala.Tuple20 +import scala.Tuple21 +import scala.Tuple22 + +/** + * This file provides functions to easily extend Scala Tuples. + * + * This means you can easily create a new tuple appended-, or prepended by a new value or tuple. + * + * For example (using tupleOf() to create a new tuple): + * ```tupleOf(a, b).appendedBy(c) == tupleOf(a, b, c)``` + * and + * ```tupleOf(a, b).prependedBy(c) == tupleOf(c, a, b)``` + * + * or in shorthand: + * ```tupleOf(a, b) + c == tupleOf(a, b, c)``` + * and + * ```c + tupleOf(a, b) == tupleOf(c, a, b)``` + * + * Note that ```tupleOf(a, b) + tupleOf(c, d)``` will merge the two into ```tupleOf(a, b, c, d)```: + * If you mean to create ```tupleOf(a, b, tupleOf(c, d))``` or ```tupleOf(tupleOf(a, b), c, d)```, + * use [appendedBy] and [prependedBy] explicitly. + * + * Note that [String.plus] concatenates any object to the string, so prepending it like ```myString + myTuple``` won't work. + * + * For concatenating two tuples, see [org.jetbrains.kotlinx.spark.api.tuples.concat]. + * + */ + +fun EmptyTuple.appendedBy(other: T1): Tuple1 = Tuple1(other) +fun Tuple1.appendedBy(other: T2): Tuple2 = Tuple2(this._1(), other) +fun Tuple2.appendedBy(other: T3): Tuple3 = Tuple3(this._1(), this._2(), other) +fun Tuple3.appendedBy(other: T4): Tuple4 = Tuple4(this._1(), this._2(), this._3(), other) +fun Tuple4.appendedBy(other: T5): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), other) +fun Tuple5.appendedBy(other: T6): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), other) +fun Tuple6.appendedBy(other: T7): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), other) +fun Tuple7.appendedBy(other: T8): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), other) +fun Tuple8.appendedBy(other: T9): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), other) +fun Tuple9.appendedBy(other: T10): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), other) +fun Tuple10.appendedBy(other: T11): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), other) +fun Tuple11.appendedBy(other: T12): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), other) +fun Tuple12.appendedBy(other: T13): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), other) +fun Tuple13.appendedBy(other: T14): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), other) +fun Tuple14.appendedBy(other: T15): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), other) +fun Tuple15.appendedBy(other: T16): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), other) +fun Tuple16.appendedBy(other: T17): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), other) +fun Tuple17.appendedBy(other: T18): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), other) +fun Tuple18.appendedBy(other: T19): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), other) +fun Tuple19.appendedBy(other: T20): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), other) +fun Tuple20.appendedBy(other: T21): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), other) +fun Tuple21.appendedBy(other: T22): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), other) + +fun EmptyTuple.prependedBy(other: T1): Tuple1 = Tuple1(other) +fun Tuple1.prependedBy(other: T1): Tuple2 = Tuple2(other, this._1()) +fun Tuple2.prependedBy(other: T1): Tuple3 = Tuple3(other, this._1(), this._2()) +fun Tuple3.prependedBy(other: T1): Tuple4 = Tuple4(other, this._1(), this._2(), this._3()) +fun Tuple4.prependedBy(other: T1): Tuple5 = Tuple5(other, this._1(), this._2(), this._3(), this._4()) +fun Tuple5.prependedBy(other: T1): Tuple6 = Tuple6(other, this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple6.prependedBy(other: T1): Tuple7 = Tuple7(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple7.prependedBy(other: T1): Tuple8 = Tuple8(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple8.prependedBy(other: T1): Tuple9 = Tuple9(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple9.prependedBy(other: T1): Tuple10 = Tuple10(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple10.prependedBy(other: T1): Tuple11 = Tuple11(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple11.prependedBy(other: T1): Tuple12 = Tuple12(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple12.prependedBy(other: T1): Tuple13 = Tuple13(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple13.prependedBy(other: T1): Tuple14 = Tuple14(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple14.prependedBy(other: T1): Tuple15 = Tuple15(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple15.prependedBy(other: T1): Tuple16 = Tuple16(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple16.prependedBy(other: T1): Tuple17 = Tuple17(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple17.prependedBy(other: T1): Tuple18 = Tuple18(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple18.prependedBy(other: T1): Tuple19 = Tuple19(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple19.prependedBy(other: T1): Tuple20 = Tuple20(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple20.prependedBy(other: T1): Tuple21 = Tuple21(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple21.prependedBy(other: T1): Tuple22 = Tuple22(other, this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) + +operator fun EmptyTuple.plus(other: T1): Tuple1 = Tuple1(other) +operator fun Tuple1.plus(other: T2): Tuple2 = this.appendedBy(other) +operator fun Tuple2.plus(other: T3): Tuple3 = this.appendedBy(other) +operator fun Tuple3.plus(other: T4): Tuple4 = this.appendedBy(other) +operator fun Tuple4.plus(other: T5): Tuple5 = this.appendedBy(other) +operator fun Tuple5.plus(other: T6): Tuple6 = this.appendedBy(other) +operator fun Tuple6.plus(other: T7): Tuple7 = this.appendedBy(other) +operator fun Tuple7.plus(other: T8): Tuple8 = this.appendedBy(other) +operator fun Tuple8.plus(other: T9): Tuple9 = this.appendedBy(other) +operator fun Tuple9.plus(other: T10): Tuple10 = this.appendedBy(other) +operator fun Tuple10.plus(other: T11): Tuple11 = this.appendedBy(other) +operator fun Tuple11.plus(other: T12): Tuple12 = this.appendedBy(other) +operator fun Tuple12.plus(other: T13): Tuple13 = this.appendedBy(other) +operator fun Tuple13.plus(other: T14): Tuple14 = this.appendedBy(other) +operator fun Tuple14.plus(other: T15): Tuple15 = this.appendedBy(other) +operator fun Tuple15.plus(other: T16): Tuple16 = this.appendedBy(other) +operator fun Tuple16.plus(other: T17): Tuple17 = this.appendedBy(other) +operator fun Tuple17.plus(other: T18): Tuple18 = this.appendedBy(other) +operator fun Tuple18.plus(other: T19): Tuple19 = this.appendedBy(other) +operator fun Tuple19.plus(other: T20): Tuple20 = this.appendedBy(other) +operator fun Tuple20.plus(other: T21): Tuple21 = this.appendedBy(other) +operator fun Tuple21.plus(other: T22): Tuple22 = this.appendedBy(other) + +operator fun T1.plus(other: EmptyTuple): Tuple1 = Tuple1(this) +operator fun T1.plus(other: Tuple1): Tuple2 = other.prependedBy(this) +operator fun T1.plus(other: Tuple2): Tuple3 = other.prependedBy(this) +operator fun T1.plus(other: Tuple3): Tuple4 = other.prependedBy(this) +operator fun T1.plus(other: Tuple4): Tuple5 = other.prependedBy(this) +operator fun T1.plus(other: Tuple5): Tuple6 = other.prependedBy(this) +operator fun T1.plus(other: Tuple6): Tuple7 = other.prependedBy(this) +operator fun T1.plus(other: Tuple7): Tuple8 = other.prependedBy(this) +operator fun T1.plus(other: Tuple8): Tuple9 = other.prependedBy(this) +operator fun T1.plus(other: Tuple9): Tuple10 = other.prependedBy(this) +operator fun T1.plus(other: Tuple10): Tuple11 = other.prependedBy(this) +operator fun T1.plus(other: Tuple11): Tuple12 = other.prependedBy(this) +operator fun T1.plus(other: Tuple12): Tuple13 = other.prependedBy(this) +operator fun T1.plus(other: Tuple13): Tuple14 = other.prependedBy(this) +operator fun T1.plus(other: Tuple14): Tuple15 = other.prependedBy(this) +operator fun T1.plus(other: Tuple15): Tuple16 = other.prependedBy(this) +operator fun T1.plus(other: Tuple16): Tuple17 = other.prependedBy(this) +operator fun T1.plus(other: Tuple17): Tuple18 = other.prependedBy(this) +operator fun T1.plus(other: Tuple18): Tuple19 = other.prependedBy(this) +operator fun T1.plus(other: Tuple19): Tuple20 = other.prependedBy(this) +operator fun T1.plus(other: Tuple20): Tuple21 = other.prependedBy(this) +operator fun T1.plus(other: Tuple21): Tuple22 = other.prependedBy(this) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleSplit.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleSplit.kt new file mode 100644 index 00000000..984bd213 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleSplit.kt @@ -0,0 +1,310 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +/** + * Given a tuple `t(a1, ..., am)`, returns a [Tuple2] of the tuple `t(a1, ..., an)` + * consisting of the first n elements, and the tuple `t(an+1, ..., am)` consisting + * of the remaining elements. + * Splitting at 0 or at n results in `t(t(), myTuple)` or `t(myTuple, t())` respectively. + * + * For example: + * ```kotlin + * t(1, 2, 3, 4, 5).splitAt2() == t(t(1, 2), t(3, 4, 5)) + * ``` + */ + +fun Tuple1.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple1(this._1())) +fun Tuple1.splitAt1(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple1(this._1()), EmptyTuple) +fun Tuple2.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple2(this._1(), this._2())) +fun Tuple2.splitAt1(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple1(this._1()), Tuple1(this._2())) +fun Tuple2.splitAt2(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple2(this._1(), this._2()), EmptyTuple) +fun Tuple3.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple3(this._1(), this._2(), this._3())) +fun Tuple3.splitAt1(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple1(this._1()), Tuple2(this._2(), this._3())) +fun Tuple3.splitAt2(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple2(this._1(), this._2()), Tuple1(this._3())) +fun Tuple3.splitAt3(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple3(this._1(), this._2(), this._3()), EmptyTuple) +fun Tuple4.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple4(this._1(), this._2(), this._3(), this._4())) +fun Tuple4.splitAt1(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple1(this._1()), Tuple3(this._2(), this._3(), this._4())) +fun Tuple4.splitAt2(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), this._2()), Tuple2(this._3(), this._4())) +fun Tuple4.splitAt3(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple3(this._1(), this._2(), this._3()), Tuple1(this._4())) +fun Tuple4.splitAt4(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple4(this._1(), this._2(), this._3(), this._4()), EmptyTuple) +fun Tuple5.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple5(this._1(), this._2(), this._3(), this._4(), this._5())) +fun Tuple5.splitAt1(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple1(this._1()), Tuple4(this._2(), this._3(), this._4(), this._5())) +fun Tuple5.splitAt2(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple2(this._1(), this._2()), Tuple3(this._3(), this._4(), this._5())) +fun Tuple5.splitAt3(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple3(this._1(), this._2(), this._3()), Tuple2(this._4(), this._5())) +fun Tuple5.splitAt4(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple1(this._5())) +fun Tuple5.splitAt5(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), EmptyTuple) +fun Tuple6.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6())) +fun Tuple6.splitAt1(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple1(this._1()), Tuple5(this._2(), this._3(), this._4(), this._5(), this._6())) +fun Tuple6.splitAt2(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple2(this._1(), this._2()), Tuple4(this._3(), this._4(), this._5(), this._6())) +fun Tuple6.splitAt3(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple3(this._1(), this._2(), this._3()), Tuple3(this._4(), this._5(), this._6())) +fun Tuple6.splitAt4(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple2(this._5(), this._6())) +fun Tuple6.splitAt5(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple1(this._6())) +fun Tuple6.splitAt6(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), EmptyTuple) +fun Tuple7.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7())) +fun Tuple7.splitAt1(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple1(this._1()), Tuple6(this._2(), this._3(), this._4(), this._5(), this._6(), this._7())) +fun Tuple7.splitAt2(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple2(this._1(), this._2()), Tuple5(this._3(), this._4(), this._5(), this._6(), this._7())) +fun Tuple7.splitAt3(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple3(this._1(), this._2(), this._3()), Tuple4(this._4(), this._5(), this._6(), this._7())) +fun Tuple7.splitAt4(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple3(this._5(), this._6(), this._7())) +fun Tuple7.splitAt5(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple2(this._6(), this._7())) +fun Tuple7.splitAt6(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple1(this._7())) +fun Tuple7.splitAt7(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), EmptyTuple) +fun Tuple8.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8())) +fun Tuple8.splitAt1(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple1(this._1()), Tuple7(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8())) +fun Tuple8.splitAt2(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple2(this._1(), this._2()), Tuple6(this._3(), this._4(), this._5(), this._6(), this._7(), this._8())) +fun Tuple8.splitAt3(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple3(this._1(), this._2(), this._3()), Tuple5(this._4(), this._5(), this._6(), this._7(), this._8())) +fun Tuple8.splitAt4(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple4(this._5(), this._6(), this._7(), this._8())) +fun Tuple8.splitAt5(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple3(this._6(), this._7(), this._8())) +fun Tuple8.splitAt6(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple2(this._7(), this._8())) +fun Tuple8.splitAt7(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple1(this._8())) +fun Tuple8.splitAt8(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), EmptyTuple) +fun Tuple9.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt1(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple1(this._1()), Tuple8(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt2(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple2(this._1(), this._2()), Tuple7(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt3(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple3(this._1(), this._2(), this._3()), Tuple6(this._4(), this._5(), this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt4(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple5(this._5(), this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt5(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple4(this._6(), this._7(), this._8(), this._9())) +fun Tuple9.splitAt6(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple3(this._7(), this._8(), this._9())) +fun Tuple9.splitAt7(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple2(this._8(), this._9())) +fun Tuple9.splitAt8(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple1(this._9())) +fun Tuple9.splitAt9(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), EmptyTuple) +fun Tuple10.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt1(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple1(this._1()), Tuple9(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt2(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple2(this._1(), this._2()), Tuple8(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt3(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple3(this._1(), this._2(), this._3()), Tuple7(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt4(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple6(this._5(), this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt5(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple5(this._6(), this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt6(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple4(this._7(), this._8(), this._9(), this._10())) +fun Tuple10.splitAt7(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple3(this._8(), this._9(), this._10())) +fun Tuple10.splitAt8(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple2(this._9(), this._10())) +fun Tuple10.splitAt9(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple1(this._10())) +fun Tuple10.splitAt10(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), EmptyTuple) +fun Tuple11.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt1(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple1(this._1()), Tuple10(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt2(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple2(this._1(), this._2()), Tuple9(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt3(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple3(this._1(), this._2(), this._3()), Tuple8(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt4(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple7(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt5(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple6(this._6(), this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt6(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple5(this._7(), this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt7(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple4(this._8(), this._9(), this._10(), this._11())) +fun Tuple11.splitAt8(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple3(this._9(), this._10(), this._11())) +fun Tuple11.splitAt9(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple2(this._10(), this._11())) +fun Tuple11.splitAt10(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple1(this._11())) +fun Tuple11.splitAt11(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), EmptyTuple) +fun Tuple12.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt1(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple1(this._1()), Tuple11(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt2(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple2(this._1(), this._2()), Tuple10(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt3(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple3(this._1(), this._2(), this._3()), Tuple9(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt4(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple8(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt5(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple7(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt6(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple6(this._7(), this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt7(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple5(this._8(), this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt8(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple4(this._9(), this._10(), this._11(), this._12())) +fun Tuple12.splitAt9(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple3(this._10(), this._11(), this._12())) +fun Tuple12.splitAt10(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple2(this._11(), this._12())) +fun Tuple12.splitAt11(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple1(this._12())) +fun Tuple12.splitAt12(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), EmptyTuple) +fun Tuple13.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt1(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple1(this._1()), Tuple12(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt2(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple2(this._1(), this._2()), Tuple11(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt3(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple3(this._1(), this._2(), this._3()), Tuple10(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt4(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple9(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt5(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple8(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt6(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple7(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt7(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple6(this._8(), this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt8(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple5(this._9(), this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt9(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple4(this._10(), this._11(), this._12(), this._13())) +fun Tuple13.splitAt10(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple3(this._11(), this._12(), this._13())) +fun Tuple13.splitAt11(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple2(this._12(), this._13())) +fun Tuple13.splitAt12(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple1(this._13())) +fun Tuple13.splitAt13(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), EmptyTuple) +fun Tuple14.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt1(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple1(this._1()), Tuple13(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt2(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple2(this._1(), this._2()), Tuple12(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt3(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple3(this._1(), this._2(), this._3()), Tuple11(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt4(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple10(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt5(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple9(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt6(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple8(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt7(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple7(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt8(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple6(this._9(), this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt9(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple5(this._10(), this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt10(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple4(this._11(), this._12(), this._13(), this._14())) +fun Tuple14.splitAt11(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple3(this._12(), this._13(), this._14())) +fun Tuple14.splitAt12(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple2(this._13(), this._14())) +fun Tuple14.splitAt13(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple1(this._14())) +fun Tuple14.splitAt14(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), EmptyTuple) +fun Tuple15.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt1(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple1(this._1()), Tuple14(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt2(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple2(this._1(), this._2()), Tuple13(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt3(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple3(this._1(), this._2(), this._3()), Tuple12(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt4(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple11(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt5(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple10(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt6(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple9(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt7(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple8(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt8(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple7(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt9(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple6(this._10(), this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt10(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple5(this._11(), this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt11(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple4(this._12(), this._13(), this._14(), this._15())) +fun Tuple15.splitAt12(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple3(this._13(), this._14(), this._15())) +fun Tuple15.splitAt13(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple2(this._14(), this._15())) +fun Tuple15.splitAt14(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple1(this._15())) +fun Tuple15.splitAt15(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), EmptyTuple) +fun Tuple16.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt1(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple1(this._1()), Tuple15(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt2(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple2(this._1(), this._2()), Tuple14(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt3(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple3(this._1(), this._2(), this._3()), Tuple13(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt4(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple12(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt5(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple11(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt6(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple10(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt7(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple9(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt8(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple8(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt9(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple7(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt10(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple6(this._11(), this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt11(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple5(this._12(), this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt12(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple4(this._13(), this._14(), this._15(), this._16())) +fun Tuple16.splitAt13(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple3(this._14(), this._15(), this._16())) +fun Tuple16.splitAt14(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple2(this._15(), this._16())) +fun Tuple16.splitAt15(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple1(this._16())) +fun Tuple16.splitAt16(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), EmptyTuple) +fun Tuple17.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt1(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple1(this._1()), Tuple16(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt2(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple2(this._1(), this._2()), Tuple15(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt3(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple3(this._1(), this._2(), this._3()), Tuple14(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt4(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple13(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt5(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple12(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt6(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple11(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt7(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple10(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt8(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple9(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt9(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple8(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt10(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple7(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt11(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple6(this._12(), this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt12(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple5(this._13(), this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt13(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple4(this._14(), this._15(), this._16(), this._17())) +fun Tuple17.splitAt14(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple3(this._15(), this._16(), this._17())) +fun Tuple17.splitAt15(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple2(this._16(), this._17())) +fun Tuple17.splitAt16(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple1(this._17())) +fun Tuple17.splitAt17(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), EmptyTuple) +fun Tuple18.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt1(): Tuple2, Tuple17> = Tuple2, Tuple17>(Tuple1(this._1()), Tuple17(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt2(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple2(this._1(), this._2()), Tuple16(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt3(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple3(this._1(), this._2(), this._3()), Tuple15(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt4(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple14(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt5(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple13(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt6(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple12(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt7(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple11(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt8(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple10(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt9(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple9(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt10(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple8(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt11(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple7(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt12(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple6(this._13(), this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt13(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple5(this._14(), this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt14(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple4(this._15(), this._16(), this._17(), this._18())) +fun Tuple18.splitAt15(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple3(this._16(), this._17(), this._18())) +fun Tuple18.splitAt16(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple2(this._17(), this._18())) +fun Tuple18.splitAt17(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), Tuple1(this._18())) +fun Tuple18.splitAt18(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()), EmptyTuple) +fun Tuple19.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt1(): Tuple2, Tuple18> = Tuple2, Tuple18>(Tuple1(this._1()), Tuple18(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt2(): Tuple2, Tuple17> = Tuple2, Tuple17>(Tuple2(this._1(), this._2()), Tuple17(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt3(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple3(this._1(), this._2(), this._3()), Tuple16(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt4(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple15(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt5(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple14(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt6(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple13(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt7(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple12(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt8(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple11(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt9(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple10(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt10(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple9(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt11(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple8(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt12(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple7(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt13(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple6(this._14(), this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt14(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple5(this._15(), this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt15(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple4(this._16(), this._17(), this._18(), this._19())) +fun Tuple19.splitAt16(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple3(this._17(), this._18(), this._19())) +fun Tuple19.splitAt17(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), Tuple2(this._18(), this._19())) +fun Tuple19.splitAt18(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()), Tuple1(this._19())) +fun Tuple19.splitAt19(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()), EmptyTuple) +fun Tuple20.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt1(): Tuple2, Tuple19> = Tuple2, Tuple19>(Tuple1(this._1()), Tuple19(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt2(): Tuple2, Tuple18> = Tuple2, Tuple18>(Tuple2(this._1(), this._2()), Tuple18(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt3(): Tuple2, Tuple17> = Tuple2, Tuple17>(Tuple3(this._1(), this._2(), this._3()), Tuple17(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt4(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple16(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt5(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple15(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt6(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple14(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt7(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple13(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt8(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple12(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt9(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple11(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt10(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple10(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt11(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple9(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt12(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple8(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt13(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple7(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt14(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple6(this._15(), this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt15(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple5(this._16(), this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt16(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple4(this._17(), this._18(), this._19(), this._20())) +fun Tuple20.splitAt17(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), Tuple3(this._18(), this._19(), this._20())) +fun Tuple20.splitAt18(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()), Tuple2(this._19(), this._20())) +fun Tuple20.splitAt19(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()), Tuple1(this._20())) +fun Tuple20.splitAt20(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()), EmptyTuple) +fun Tuple21.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt1(): Tuple2, Tuple20> = Tuple2, Tuple20>(Tuple1(this._1()), Tuple20(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt2(): Tuple2, Tuple19> = Tuple2, Tuple19>(Tuple2(this._1(), this._2()), Tuple19(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt3(): Tuple2, Tuple18> = Tuple2, Tuple18>(Tuple3(this._1(), this._2(), this._3()), Tuple18(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt4(): Tuple2, Tuple17> = Tuple2, Tuple17>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple17(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt5(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple16(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt6(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple15(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt7(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple14(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt8(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple13(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt9(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple12(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt10(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple11(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt11(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple10(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt12(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple9(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt13(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple8(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt14(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple7(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt15(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple6(this._16(), this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt16(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple5(this._17(), this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt17(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), Tuple4(this._18(), this._19(), this._20(), this._21())) +fun Tuple21.splitAt18(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()), Tuple3(this._19(), this._20(), this._21())) +fun Tuple21.splitAt19(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()), Tuple2(this._20(), this._21())) +fun Tuple21.splitAt20(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()), Tuple1(this._21())) +fun Tuple21.splitAt21(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()), EmptyTuple) +fun Tuple22.splitAt0(): Tuple2> = Tuple2>(EmptyTuple, Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt1(): Tuple2, Tuple21> = Tuple2, Tuple21>(Tuple1(this._1()), Tuple21(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt2(): Tuple2, Tuple20> = Tuple2, Tuple20>(Tuple2(this._1(), this._2()), Tuple20(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt3(): Tuple2, Tuple19> = Tuple2, Tuple19>(Tuple3(this._1(), this._2(), this._3()), Tuple19(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt4(): Tuple2, Tuple18> = Tuple2, Tuple18>(Tuple4(this._1(), this._2(), this._3(), this._4()), Tuple18(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt5(): Tuple2, Tuple17> = Tuple2, Tuple17>(Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()), Tuple17(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt6(): Tuple2, Tuple16> = Tuple2, Tuple16>(Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()), Tuple16(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt7(): Tuple2, Tuple15> = Tuple2, Tuple15>(Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()), Tuple15(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt8(): Tuple2, Tuple14> = Tuple2, Tuple14>(Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()), Tuple14(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt9(): Tuple2, Tuple13> = Tuple2, Tuple13>(Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()), Tuple13(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt10(): Tuple2, Tuple12> = Tuple2, Tuple12>(Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()), Tuple12(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt11(): Tuple2, Tuple11> = Tuple2, Tuple11>(Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()), Tuple11(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt12(): Tuple2, Tuple10> = Tuple2, Tuple10>(Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()), Tuple10(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt13(): Tuple2, Tuple9> = Tuple2, Tuple9>(Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()), Tuple9(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt14(): Tuple2, Tuple8> = Tuple2, Tuple8>(Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()), Tuple8(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt15(): Tuple2, Tuple7> = Tuple2, Tuple7>(Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()), Tuple7(this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt16(): Tuple2, Tuple6> = Tuple2, Tuple6>(Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()), Tuple6(this._17(), this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt17(): Tuple2, Tuple5> = Tuple2, Tuple5>(Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()), Tuple5(this._18(), this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt18(): Tuple2, Tuple4> = Tuple2, Tuple4>(Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()), Tuple4(this._19(), this._20(), this._21(), this._22())) +fun Tuple22.splitAt19(): Tuple2, Tuple3> = Tuple2, Tuple3>(Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()), Tuple3(this._20(), this._21(), this._22())) +fun Tuple22.splitAt20(): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()), Tuple2(this._21(), this._22())) +fun Tuple22.splitAt21(): Tuple2, Tuple1> = Tuple2, Tuple1>(Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()), Tuple1(this._22())) +fun Tuple22.splitAt22(): Tuple2, EmptyTuple> = Tuple2, EmptyTuple>(Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()), EmptyTuple) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleTake.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleTake.kt new file mode 100644 index 00000000..ffe7f18d --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleTake.kt @@ -0,0 +1,587 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +/** + * This file contains all functions to take N items from the beginning or end of a Tuple. + * If 0 items are taken, the result will be [EmptyTuple]. + * + * For example: + * ```kotlin + * tupleOf(1, 2, 3, 4).take2() == tupleOf(1, 2) + * tupleOf(1, 2, 3, 4).takeLast2() == tupleOf(3, 4) + * ``` + */ + +fun Tuple1<*>.take0(): EmptyTuple = EmptyTuple +fun Tuple1.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple2<*, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple2.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple2.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple3<*, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple3.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple3.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple3.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple4<*, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple4.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple4.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple4.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple4.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple5<*, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple5.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple5.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple5.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple5.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple5.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple6<*, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple6.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple6.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple6.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple6.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple6.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple6.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple7<*, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple7.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple7.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple7.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple7.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple7.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple7.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple7.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple8<*, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple8.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple8.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple8.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple8.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple8.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple8.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple8.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple8.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple9<*, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple9.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple9.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple9.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple9.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple9.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple9.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple9.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple9.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple9.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple10<*, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple10.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple10.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple10.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple10.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple10.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple10.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple10.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple10.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple10.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple10.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple11.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple11.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple11.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple11.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple11.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple11.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple11.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple11.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple11.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple11.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple11.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple12.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple12.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple12.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple12.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple12.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple12.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple12.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple12.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple12.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple12.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple12.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple12.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple13.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple13.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple13.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple13.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple13.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple13.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple13.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple13.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple13.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple13.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple13.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple13.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple13.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple14.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple14.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple14.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple14.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple14.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple14.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple14.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple14.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple14.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple14.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple14.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple14.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple14.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple14.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple15.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple15.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple15.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple15.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple15.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple15.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple15.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple15.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple15.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple15.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple15.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple15.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple15.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple15.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple15.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple16.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple16.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple16.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple16.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple16.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple16.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple16.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple16.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple16.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple16.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple16.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple16.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple16.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple16.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple16.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple16.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple17.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple17.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple17.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple17.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple17.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple17.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple17.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple17.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple17.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple17.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple17.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple17.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple17.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple17.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple17.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple17.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple17.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple18.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple18.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple18.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple18.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple18.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple18.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple18.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple18.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple18.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple18.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple18.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple18.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple18.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple18.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple18.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple18.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple18.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple18.take18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple19.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple19.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple19.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple19.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple19.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple19.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple19.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple19.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple19.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple19.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple19.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple19.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple19.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple19.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple19.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple19.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple19.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple19.take18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple19.take19(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple20.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple20.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple20.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple20.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple20.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple20.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple20.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple20.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple20.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple20.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple20.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple20.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple20.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple20.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple20.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple20.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple20.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple20.take18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple20.take19(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple20.take20(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple21.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple21.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple21.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple21.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple21.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple21.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple21.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple21.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple21.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple21.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple21.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple21.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple21.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple21.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple21.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple21.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple21.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple21.take18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple21.take19(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple21.take20(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple21.take21(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.take0(): EmptyTuple = EmptyTuple +fun Tuple22.take1(): Tuple1 = Tuple1(this._1()) +fun Tuple22.take2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple22.take3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple22.take4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple22.take5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple22.take6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple22.take7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple22.take8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple22.take9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple22.take10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple22.take11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple22.take12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple22.take13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple22.take14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple22.take15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple22.take16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple22.take17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple22.take18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple22.take19(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple22.take20(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple22.take21(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple22.take22(): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) + + + +fun Tuple1<*>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple1.takeLast1(): Tuple1 = Tuple1(this._1()) +fun Tuple2<*, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple2.takeLast2(): Tuple2 = Tuple2(this._1(), this._2()) +fun Tuple2<*, T2>.takeLast1(): Tuple1 = Tuple1(this._2()) +fun Tuple3<*, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple3.takeLast3(): Tuple3 = Tuple3(this._1(), this._2(), this._3()) +fun Tuple3<*, T2, T3>.takeLast2(): Tuple2 = Tuple2(this._2(), this._3()) +fun Tuple3<*, *, T3>.takeLast1(): Tuple1 = Tuple1(this._3()) +fun Tuple4<*, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple4.takeLast4(): Tuple4 = Tuple4(this._1(), this._2(), this._3(), this._4()) +fun Tuple4<*, T2, T3, T4>.takeLast3(): Tuple3 = Tuple3(this._2(), this._3(), this._4()) +fun Tuple4<*, *, T3, T4>.takeLast2(): Tuple2 = Tuple2(this._3(), this._4()) +fun Tuple4<*, *, *, T4>.takeLast1(): Tuple1 = Tuple1(this._4()) +fun Tuple5<*, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple5.takeLast5(): Tuple5 = Tuple5(this._1(), this._2(), this._3(), this._4(), this._5()) +fun Tuple5<*, T2, T3, T4, T5>.takeLast4(): Tuple4 = Tuple4(this._2(), this._3(), this._4(), this._5()) +fun Tuple5<*, *, T3, T4, T5>.takeLast3(): Tuple3 = Tuple3(this._3(), this._4(), this._5()) +fun Tuple5<*, *, *, T4, T5>.takeLast2(): Tuple2 = Tuple2(this._4(), this._5()) +fun Tuple5<*, *, *, *, T5>.takeLast1(): Tuple1 = Tuple1(this._5()) +fun Tuple6<*, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple6.takeLast6(): Tuple6 = Tuple6(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, T2, T3, T4, T5, T6>.takeLast5(): Tuple5 = Tuple5(this._2(), this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, *, T3, T4, T5, T6>.takeLast4(): Tuple4 = Tuple4(this._3(), this._4(), this._5(), this._6()) +fun Tuple6<*, *, *, T4, T5, T6>.takeLast3(): Tuple3 = Tuple3(this._4(), this._5(), this._6()) +fun Tuple6<*, *, *, *, T5, T6>.takeLast2(): Tuple2 = Tuple2(this._5(), this._6()) +fun Tuple6<*, *, *, *, *, T6>.takeLast1(): Tuple1 = Tuple1(this._6()) +fun Tuple7<*, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple7.takeLast7(): Tuple7 = Tuple7(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, T2, T3, T4, T5, T6, T7>.takeLast6(): Tuple6 = Tuple6(this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, T3, T4, T5, T6, T7>.takeLast5(): Tuple5 = Tuple5(this._3(), this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, T4, T5, T6, T7>.takeLast4(): Tuple4 = Tuple4(this._4(), this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, *, T5, T6, T7>.takeLast3(): Tuple3 = Tuple3(this._5(), this._6(), this._7()) +fun Tuple7<*, *, *, *, *, T6, T7>.takeLast2(): Tuple2 = Tuple2(this._6(), this._7()) +fun Tuple7<*, *, *, *, *, *, T7>.takeLast1(): Tuple1 = Tuple1(this._7()) +fun Tuple8<*, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple8.takeLast8(): Tuple8 = Tuple8(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, T2, T3, T4, T5, T6, T7, T8>.takeLast7(): Tuple7 = Tuple7(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, T3, T4, T5, T6, T7, T8>.takeLast6(): Tuple6 = Tuple6(this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, T4, T5, T6, T7, T8>.takeLast5(): Tuple5 = Tuple5(this._4(), this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, T5, T6, T7, T8>.takeLast4(): Tuple4 = Tuple4(this._5(), this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, *, T6, T7, T8>.takeLast3(): Tuple3 = Tuple3(this._6(), this._7(), this._8()) +fun Tuple8<*, *, *, *, *, *, T7, T8>.takeLast2(): Tuple2 = Tuple2(this._7(), this._8()) +fun Tuple8<*, *, *, *, *, *, *, T8>.takeLast1(): Tuple1 = Tuple1(this._8()) +fun Tuple9<*, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple9.takeLast9(): Tuple9 = Tuple9(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, T2, T3, T4, T5, T6, T7, T8, T9>.takeLast8(): Tuple8 = Tuple8(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, T3, T4, T5, T6, T7, T8, T9>.takeLast7(): Tuple7 = Tuple7(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, T4, T5, T6, T7, T8, T9>.takeLast6(): Tuple6 = Tuple6(this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, T5, T6, T7, T8, T9>.takeLast5(): Tuple5 = Tuple5(this._5(), this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, T6, T7, T8, T9>.takeLast4(): Tuple4 = Tuple4(this._6(), this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, T7, T8, T9>.takeLast3(): Tuple3 = Tuple3(this._7(), this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, *, T8, T9>.takeLast2(): Tuple2 = Tuple2(this._8(), this._9()) +fun Tuple9<*, *, *, *, *, *, *, *, T9>.takeLast1(): Tuple1 = Tuple1(this._9()) +fun Tuple10<*, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple10.takeLast10(): Tuple10 = Tuple10(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, T2, T3, T4, T5, T6, T7, T8, T9, T10>.takeLast9(): Tuple9 = Tuple9(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, T3, T4, T5, T6, T7, T8, T9, T10>.takeLast8(): Tuple8 = Tuple8(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, T4, T5, T6, T7, T8, T9, T10>.takeLast7(): Tuple7 = Tuple7(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, T5, T6, T7, T8, T9, T10>.takeLast6(): Tuple6 = Tuple6(this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, T6, T7, T8, T9, T10>.takeLast5(): Tuple5 = Tuple5(this._6(), this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, T7, T8, T9, T10>.takeLast4(): Tuple4 = Tuple4(this._7(), this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, T8, T9, T10>.takeLast3(): Tuple3 = Tuple3(this._8(), this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, *, T9, T10>.takeLast2(): Tuple2 = Tuple2(this._9(), this._10()) +fun Tuple10<*, *, *, *, *, *, *, *, *, T10>.takeLast1(): Tuple1 = Tuple1(this._10()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple11.takeLast11(): Tuple11 = Tuple11(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>.takeLast10(): Tuple10 = Tuple10(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11>.takeLast9(): Tuple9 = Tuple9(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11>.takeLast8(): Tuple8 = Tuple8(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, T5, T6, T7, T8, T9, T10, T11>.takeLast7(): Tuple7 = Tuple7(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, T6, T7, T8, T9, T10, T11>.takeLast6(): Tuple6 = Tuple6(this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, T7, T8, T9, T10, T11>.takeLast5(): Tuple5 = Tuple5(this._7(), this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, T8, T9, T10, T11>.takeLast4(): Tuple4 = Tuple4(this._8(), this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, T9, T10, T11>.takeLast3(): Tuple3 = Tuple3(this._9(), this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, *, T10, T11>.takeLast2(): Tuple2 = Tuple2(this._10(), this._11()) +fun Tuple11<*, *, *, *, *, *, *, *, *, *, T11>.takeLast1(): Tuple1 = Tuple1(this._11()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple12.takeLast12(): Tuple12 = Tuple12(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.takeLast11(): Tuple11 = Tuple11(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>.takeLast10(): Tuple10 = Tuple10(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12>.takeLast9(): Tuple9 = Tuple9(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12>.takeLast8(): Tuple8 = Tuple8(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12>.takeLast7(): Tuple7 = Tuple7(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12>.takeLast6(): Tuple6 = Tuple6(this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, T8, T9, T10, T11, T12>.takeLast5(): Tuple5 = Tuple5(this._8(), this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, T9, T10, T11, T12>.takeLast4(): Tuple4 = Tuple4(this._9(), this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, T10, T11, T12>.takeLast3(): Tuple3 = Tuple3(this._10(), this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, T11, T12>.takeLast2(): Tuple2 = Tuple2(this._11(), this._12()) +fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, T12>.takeLast1(): Tuple1 = Tuple1(this._12()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple13.takeLast13(): Tuple13 = Tuple13(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.takeLast12(): Tuple12 = Tuple12(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.takeLast11(): Tuple11 = Tuple11(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>.takeLast10(): Tuple10 = Tuple10(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13>.takeLast9(): Tuple9 = Tuple9(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13>.takeLast8(): Tuple8 = Tuple8(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13>.takeLast7(): Tuple7 = Tuple7(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13>.takeLast6(): Tuple6 = Tuple6(this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13>.takeLast5(): Tuple5 = Tuple5(this._9(), this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13>.takeLast4(): Tuple4 = Tuple4(this._10(), this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, T11, T12, T13>.takeLast3(): Tuple3 = Tuple3(this._11(), this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, T12, T13>.takeLast2(): Tuple2 = Tuple2(this._12(), this._13()) +fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, T13>.takeLast1(): Tuple1 = Tuple1(this._13()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple14.takeLast14(): Tuple14 = Tuple14(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast13(): Tuple13 = Tuple13(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast12(): Tuple12 = Tuple12(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast11(): Tuple11 = Tuple11(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast10(): Tuple10 = Tuple10(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast9(): Tuple9 = Tuple9(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14>.takeLast8(): Tuple8 = Tuple8(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14>.takeLast7(): Tuple7 = Tuple7(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14>.takeLast6(): Tuple6 = Tuple6(this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14>.takeLast5(): Tuple5 = Tuple5(this._10(), this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14>.takeLast4(): Tuple4 = Tuple4(this._11(), this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14>.takeLast3(): Tuple3 = Tuple3(this._12(), this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14>.takeLast2(): Tuple2 = Tuple2(this._13(), this._14()) +fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, T14>.takeLast1(): Tuple1 = Tuple1(this._14()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple15.takeLast15(): Tuple15 = Tuple15(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast14(): Tuple14 = Tuple14(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast13(): Tuple13 = Tuple13(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast12(): Tuple12 = Tuple12(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast11(): Tuple11 = Tuple11(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast10(): Tuple10 = Tuple10(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast9(): Tuple9 = Tuple9(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15>.takeLast8(): Tuple8 = Tuple8(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15>.takeLast7(): Tuple7 = Tuple7(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15>.takeLast6(): Tuple6 = Tuple6(this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15>.takeLast5(): Tuple5 = Tuple5(this._11(), this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15>.takeLast4(): Tuple4 = Tuple4(this._12(), this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15>.takeLast3(): Tuple3 = Tuple3(this._13(), this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15>.takeLast2(): Tuple2 = Tuple2(this._14(), this._15()) +fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15>.takeLast1(): Tuple1 = Tuple1(this._15()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple16.takeLast16(): Tuple16 = Tuple16(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast15(): Tuple15 = Tuple15(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast14(): Tuple14 = Tuple14(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast13(): Tuple13 = Tuple13(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast12(): Tuple12 = Tuple12(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast11(): Tuple11 = Tuple11(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast10(): Tuple10 = Tuple10(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast9(): Tuple9 = Tuple9(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16>.takeLast8(): Tuple8 = Tuple8(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16>.takeLast7(): Tuple7 = Tuple7(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16>.takeLast6(): Tuple6 = Tuple6(this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16>.takeLast5(): Tuple5 = Tuple5(this._12(), this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16>.takeLast4(): Tuple4 = Tuple4(this._13(), this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16>.takeLast3(): Tuple3 = Tuple3(this._14(), this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16>.takeLast2(): Tuple2 = Tuple2(this._15(), this._16()) +fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16>.takeLast1(): Tuple1 = Tuple1(this._16()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple17.takeLast17(): Tuple17 = Tuple17(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast16(): Tuple16 = Tuple16(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast15(): Tuple15 = Tuple15(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast14(): Tuple14 = Tuple14(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast13(): Tuple13 = Tuple13(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast12(): Tuple12 = Tuple12(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast11(): Tuple11 = Tuple11(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast10(): Tuple10 = Tuple10(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast9(): Tuple9 = Tuple9(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17>.takeLast8(): Tuple8 = Tuple8(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17>.takeLast7(): Tuple7 = Tuple7(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17>.takeLast6(): Tuple6 = Tuple6(this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17>.takeLast5(): Tuple5 = Tuple5(this._13(), this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17>.takeLast4(): Tuple4 = Tuple4(this._14(), this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17>.takeLast3(): Tuple3 = Tuple3(this._15(), this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17>.takeLast2(): Tuple2 = Tuple2(this._16(), this._17()) +fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17>.takeLast1(): Tuple1 = Tuple1(this._17()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple18.takeLast18(): Tuple18 = Tuple18(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast17(): Tuple17 = Tuple17(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast16(): Tuple16 = Tuple16(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast15(): Tuple15 = Tuple15(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast14(): Tuple14 = Tuple14(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast13(): Tuple13 = Tuple13(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast12(): Tuple12 = Tuple12(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast11(): Tuple11 = Tuple11(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast10(): Tuple10 = Tuple10(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast9(): Tuple9 = Tuple9(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18>.takeLast8(): Tuple8 = Tuple8(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18>.takeLast7(): Tuple7 = Tuple7(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18>.takeLast6(): Tuple6 = Tuple6(this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18>.takeLast5(): Tuple5 = Tuple5(this._14(), this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18>.takeLast4(): Tuple4 = Tuple4(this._15(), this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18>.takeLast3(): Tuple3 = Tuple3(this._16(), this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18>.takeLast2(): Tuple2 = Tuple2(this._17(), this._18()) +fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18>.takeLast1(): Tuple1 = Tuple1(this._18()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple19.takeLast19(): Tuple19 = Tuple19(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast18(): Tuple18 = Tuple18(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast17(): Tuple17 = Tuple17(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast16(): Tuple16 = Tuple16(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast15(): Tuple15 = Tuple15(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast14(): Tuple14 = Tuple14(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast13(): Tuple13 = Tuple13(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast12(): Tuple12 = Tuple12(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast11(): Tuple11 = Tuple11(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast10(): Tuple10 = Tuple10(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast9(): Tuple9 = Tuple9(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19>.takeLast8(): Tuple8 = Tuple8(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19>.takeLast7(): Tuple7 = Tuple7(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19>.takeLast6(): Tuple6 = Tuple6(this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19>.takeLast5(): Tuple5 = Tuple5(this._15(), this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19>.takeLast4(): Tuple4 = Tuple4(this._16(), this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19>.takeLast3(): Tuple3 = Tuple3(this._17(), this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19>.takeLast2(): Tuple2 = Tuple2(this._18(), this._19()) +fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19>.takeLast1(): Tuple1 = Tuple1(this._19()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple20.takeLast20(): Tuple20 = Tuple20(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast19(): Tuple19 = Tuple19(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast18(): Tuple18 = Tuple18(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast17(): Tuple17 = Tuple17(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast16(): Tuple16 = Tuple16(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast15(): Tuple15 = Tuple15(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast14(): Tuple14 = Tuple14(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast13(): Tuple13 = Tuple13(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast12(): Tuple12 = Tuple12(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast11(): Tuple11 = Tuple11(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast10(): Tuple10 = Tuple10(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast9(): Tuple9 = Tuple9(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20>.takeLast8(): Tuple8 = Tuple8(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20>.takeLast7(): Tuple7 = Tuple7(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20>.takeLast6(): Tuple6 = Tuple6(this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20>.takeLast5(): Tuple5 = Tuple5(this._16(), this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20>.takeLast4(): Tuple4 = Tuple4(this._17(), this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20>.takeLast3(): Tuple3 = Tuple3(this._18(), this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20>.takeLast2(): Tuple2 = Tuple2(this._19(), this._20()) +fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20>.takeLast1(): Tuple1 = Tuple1(this._20()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple21.takeLast21(): Tuple21 = Tuple21(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast20(): Tuple20 = Tuple20(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast19(): Tuple19 = Tuple19(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast18(): Tuple18 = Tuple18(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast17(): Tuple17 = Tuple17(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast16(): Tuple16 = Tuple16(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast15(): Tuple15 = Tuple15(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast14(): Tuple14 = Tuple14(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast13(): Tuple13 = Tuple13(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast12(): Tuple12 = Tuple12(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast11(): Tuple11 = Tuple11(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast10(): Tuple10 = Tuple10(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast9(): Tuple9 = Tuple9(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20, T21>.takeLast8(): Tuple8 = Tuple8(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20, T21>.takeLast7(): Tuple7 = Tuple7(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20, T21>.takeLast6(): Tuple6 = Tuple6(this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20, T21>.takeLast5(): Tuple5 = Tuple5(this._17(), this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20, T21>.takeLast4(): Tuple4 = Tuple4(this._18(), this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20, T21>.takeLast3(): Tuple3 = Tuple3(this._19(), this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20, T21>.takeLast2(): Tuple2 = Tuple2(this._20(), this._21()) +fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T21>.takeLast1(): Tuple1 = Tuple1(this._21()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.takeLast0(): EmptyTuple = EmptyTuple +fun Tuple22.takeLast22(): Tuple22 = Tuple22(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast21(): Tuple21 = Tuple21(this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast20(): Tuple20 = Tuple20(this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast19(): Tuple19 = Tuple19(this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast18(): Tuple18 = Tuple18(this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast17(): Tuple17 = Tuple17(this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast16(): Tuple16 = Tuple16(this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast15(): Tuple15 = Tuple15(this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast14(): Tuple14 = Tuple14(this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast13(): Tuple13 = Tuple13(this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast12(): Tuple12 = Tuple12(this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast11(): Tuple11 = Tuple11(this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast10(): Tuple10 = Tuple10(this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, T14, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast9(): Tuple9 = Tuple9(this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, T15, T16, T17, T18, T19, T20, T21, T22>.takeLast8(): Tuple8 = Tuple8(this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T16, T17, T18, T19, T20, T21, T22>.takeLast7(): Tuple7 = Tuple7(this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T17, T18, T19, T20, T21, T22>.takeLast6(): Tuple6 = Tuple6(this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T18, T19, T20, T21, T22>.takeLast5(): Tuple5 = Tuple5(this._18(), this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T19, T20, T21, T22>.takeLast4(): Tuple4 = Tuple4(this._19(), this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T20, T21, T22>.takeLast3(): Tuple3 = Tuple3(this._20(), this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T21, T22>.takeLast2(): Tuple2 = Tuple2(this._21(), this._22()) +fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, T22>.takeLast1(): Tuple1 = Tuple1(this._22()) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleZip.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleZip.kt new file mode 100644 index 00000000..c4930996 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TupleZip.kt @@ -0,0 +1,559 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.* + +/** + * This file provides zip-functions to all Tuple variants. + * Given two tuples, `t(a1, ..., an) zip t(a1, ..., an)`, returns a tuple + * `t(t(a1, b1), ..., t(an, bn))`. If the two tuples have different sizes, + * the extra elements of the larger tuple will be disregarded. + * The result is typed as `TupleX, ..., Tuple2>`. + */ + +infix fun Tuple1<*>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple1<*>): EmptyTuple = EmptyTuple +infix fun Tuple1.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple2): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple3): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple4): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple5): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple6): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple7): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple8): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple9): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple10): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple11): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple12): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple13): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple14): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple15): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple16): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple17): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple18): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple19): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple20): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple21): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple1.zip(other: Tuple22): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple2<*, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple2<*, *>): EmptyTuple = EmptyTuple +infix fun Tuple2.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple2.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple3): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple4): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple5): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple6): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple7): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple8): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple9): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple10): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple11): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple12): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple13): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple14): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple15): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple16): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple17): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple18): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple19): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple20): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple21): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple2.zip(other: Tuple22): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple3<*, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple3<*, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple3.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple3.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple3.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple4): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple5): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple6): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple7): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple8): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple9): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple10): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple11): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple12): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple13): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple14): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple15): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple16): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple17): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple18): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple19): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple20): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple21): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple3.zip(other: Tuple22): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple4<*, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple4<*, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple4.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple4.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple4.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple4.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple5): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple6): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple7): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple8): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple9): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple10): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple11): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple12): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple13): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple14): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple15): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple16): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple17): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple18): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple19): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple20): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple21): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple4.zip(other: Tuple22): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple5<*, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple5<*, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple5.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple5.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple5.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple5.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple5.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple6): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple7): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple8): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple9): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple10): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple11): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple12): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple13): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple14): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple15): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple16): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple17): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple18): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple19): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple20): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple21): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple5.zip(other: Tuple22): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple6<*, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple6<*, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple6.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple6.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple6.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple6.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple6.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple6.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple7): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple8): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple9): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple10): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple11): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple12): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple13): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple14): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple15): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple16): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple17): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple18): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple19): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple20): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple21): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple6.zip(other: Tuple22): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple7<*, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple7<*, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple7.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple7.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple7.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple7.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple7.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple7.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple7.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple8): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple9): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple10): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple11): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple12): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple13): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple14): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple15): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple16): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple17): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple18): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple19): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple20): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple21): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple7.zip(other: Tuple22): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple8<*, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple8<*, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple8.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple8.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple8.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple8.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple8.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple8.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple8.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple8.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple9): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple10): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple11): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple12): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple13): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple14): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple15): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple16): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple17): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple18): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple19): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple20): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple21): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple8.zip(other: Tuple22): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple9<*, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple9<*, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple9.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple9.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple9.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple9.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple9.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple9.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple9.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple9.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple9.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple10): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple11): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple12): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple13): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple14): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple15): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple16): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple17): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple18): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple19): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple20): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple21): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple9.zip(other: Tuple22): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple10<*, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple10<*, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple10.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple10.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple10.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple10.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple10.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple10.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple10.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple10.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple10.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple10.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple11): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple12): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple13): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple14): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple15): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple16): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple17): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple18): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple19): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple20): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple21): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple10.zip(other: Tuple22): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple11<*, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple11<*, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple11.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple11.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple11.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple11.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple11.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple11.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple11.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple11.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple11.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple11.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple11.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple12): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple13): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple14): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple15): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple16): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple17): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple18): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple19): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple20): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple21): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple11.zip(other: Tuple22): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple12<*, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple12.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple12.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple12.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple12.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple12.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple12.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple12.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple12.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple12.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple12.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple12.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple12.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple13): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple14): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple15): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple16): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple17): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple18): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple19): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple20): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple21): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple12.zip(other: Tuple22): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple13<*, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple13.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple13.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple13.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple13.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple13.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple13.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple13.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple13.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple13.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple13.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple13.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple13.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple13.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple14): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple15): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple16): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple17): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple18): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple19): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple20): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple21): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple13.zip(other: Tuple22): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple14<*, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple14.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple14.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple14.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple14.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple14.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple14.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple14.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple14.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple14.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple14.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple14.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple14.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple14.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple14.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple15): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple16): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple17): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple18): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple19): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple20): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple21): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple14.zip(other: Tuple22): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple15<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple15.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple15.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple15.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple15.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple15.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple15.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple15.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple15.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple15.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple15.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple15.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple15.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple15.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple15.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple15.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple16): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple17): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple18): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple19): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple20): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple21): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple15.zip(other: Tuple22): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple16<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple16.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple16.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple16.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple16.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple16.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple16.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple16.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple16.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple16.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple16.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple16.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple16.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple16.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple16.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple16.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple16.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple17): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple18): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple19): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple20): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple21): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple16.zip(other: Tuple22): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple17<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple17.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple17.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple17.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple17.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple17.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple17.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple17.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple17.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple17.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple17.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple17.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple17.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple17.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple17.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple17.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple17.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple17.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple17.zip(other: Tuple18): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple17.zip(other: Tuple19): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple17.zip(other: Tuple20): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple17.zip(other: Tuple21): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple17.zip(other: Tuple22): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple18<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple18.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple18.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple18.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple18.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple18.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple18.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple18.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple18.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple18.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple18.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple18.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple18.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple18.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple18.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple18.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple18.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple18.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple18.zip(other: Tuple18): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple18.zip(other: Tuple19): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple18.zip(other: Tuple20): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple18.zip(other: Tuple21): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple18.zip(other: Tuple22): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple19<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple19.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple19.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple19.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple19.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple19.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple19.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple19.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple19.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple19.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple19.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple19.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple19.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple19.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple19.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple19.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple19.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple19.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple19.zip(other: Tuple18): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple19.zip(other: Tuple19): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple19.zip(other: Tuple20): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple19.zip(other: Tuple21): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple19.zip(other: Tuple22): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple20<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple20.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple20.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple20.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple20.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple20.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple20.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple20.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple20.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple20.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple20.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple20.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple20.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple20.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple20.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple20.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple20.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple20.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple20.zip(other: Tuple18): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple20.zip(other: Tuple19): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple20.zip(other: Tuple20): Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20())) +infix fun Tuple20.zip(other: Tuple21): Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20())) +infix fun Tuple20.zip(other: Tuple22): Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20())) +infix fun Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple21<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple21.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple21.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple21.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple21.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple21.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple21.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple21.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple21.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple21.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple21.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple21.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple21.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple21.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple21.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple21.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple21.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple21.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple21.zip(other: Tuple18): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple21.zip(other: Tuple19): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple21.zip(other: Tuple20): Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20())) +infix fun Tuple21.zip(other: Tuple21): Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20()), Tuple2(this._21(), other._21())) +infix fun Tuple21.zip(other: Tuple22): Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20()), Tuple2(this._21(), other._21())) +infix fun Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>.zip(other: EmptyTuple): EmptyTuple = EmptyTuple +infix fun EmptyTuple.zip(other: Tuple22<*, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *, *>): EmptyTuple = EmptyTuple +infix fun Tuple22.zip(other: Tuple1): Tuple1> = Tuple1>(Tuple2(this._1(), other._1())) +infix fun Tuple22.zip(other: Tuple2): Tuple2, Tuple2> = Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2())) +infix fun Tuple22.zip(other: Tuple3): Tuple3, Tuple2, Tuple2> = Tuple3, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3())) +infix fun Tuple22.zip(other: Tuple4): Tuple4, Tuple2, Tuple2, Tuple2> = Tuple4, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4())) +infix fun Tuple22.zip(other: Tuple5): Tuple5, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple5, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5())) +infix fun Tuple22.zip(other: Tuple6): Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple6, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6())) +infix fun Tuple22.zip(other: Tuple7): Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple7, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7())) +infix fun Tuple22.zip(other: Tuple8): Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple8, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8())) +infix fun Tuple22.zip(other: Tuple9): Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple9, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9())) +infix fun Tuple22.zip(other: Tuple10): Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple10, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10())) +infix fun Tuple22.zip(other: Tuple11): Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple11, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11())) +infix fun Tuple22.zip(other: Tuple12): Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple12, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12())) +infix fun Tuple22.zip(other: Tuple13): Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple13, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13())) +infix fun Tuple22.zip(other: Tuple14): Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple14, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14())) +infix fun Tuple22.zip(other: Tuple15): Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple15, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15())) +infix fun Tuple22.zip(other: Tuple16): Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple16, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16())) +infix fun Tuple22.zip(other: Tuple17): Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple17, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17())) +infix fun Tuple22.zip(other: Tuple18): Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple18, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18())) +infix fun Tuple22.zip(other: Tuple19): Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple19, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19())) +infix fun Tuple22.zip(other: Tuple20): Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple20, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20())) +infix fun Tuple22.zip(other: Tuple21): Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple21, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20()), Tuple2(this._21(), other._21())) +infix fun Tuple22.zip(other: Tuple22): Tuple22, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2> = Tuple22, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2, Tuple2>(Tuple2(this._1(), other._1()), Tuple2(this._2(), other._2()), Tuple2(this._3(), other._3()), Tuple2(this._4(), other._4()), Tuple2(this._5(), other._5()), Tuple2(this._6(), other._6()), Tuple2(this._7(), other._7()), Tuple2(this._8(), other._8()), Tuple2(this._9(), other._9()), Tuple2(this._10(), other._10()), Tuple2(this._11(), other._11()), Tuple2(this._12(), other._12()), Tuple2(this._13(), other._13()), Tuple2(this._14(), other._14()), Tuple2(this._15(), other._15()), Tuple2(this._16(), other._16()), Tuple2(this._17(), other._17()), Tuple2(this._18(), other._18()), Tuple2(this._19(), other._19()), Tuple2(this._20(), other._20()), Tuple2(this._21(), other._21()), Tuple2(this._22(), other._22())) diff --git a/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TypedProductExtensions.kt b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TypedProductExtensions.kt new file mode 100644 index 00000000..1f139cb1 --- /dev/null +++ b/scala-tuples-in-kotlin/src/main/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TypedProductExtensions.kt @@ -0,0 +1,1047 @@ +/*- + * =LICENSE= + * Kotlin Spark API: API for Spark 3.2+ (Scala 2.12) + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +@file:Suppress("UNCHECKED_CAST", "RemoveExplicitTypeArguments") + +package org.jetbrains.kotlinx.spark.api.tuples + +import scala.Product1 +import scala.Product2 +import scala.Product3 +import scala.Product4 +import scala.Product5 +import scala.Product6 +import scala.Product7 +import scala.Product8 +import scala.Product9 +import scala.Product10 +import scala.Product11 +import scala.Product12 +import scala.Product13 +import scala.Product14 +import scala.Product15 +import scala.Product16 +import scala.Product17 +import scala.Product18 +import scala.Product19 +import scala.Product20 +import scala.Product21 +import scala.Product22 +import scala.collection.JavaConverters + +/** + * This file provides quality of life extensions for Products/Tuples where each of its types is the same. + * This includes converting to [Iterable] or getting an [Iterator] of a Product/Tuple, + * as well as taking a single value or slice from a Tuple/Product. + * + */ + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product1.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product2.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product3.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product4.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product5.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product6.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product7.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product8.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product9.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product10.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product11.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product12.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product13.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product14.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product15.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product16.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product17.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product18.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product19.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product20.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product21.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Allows this product to be iterated over. Returns an iterator of type [T]. */ +operator fun Product22.iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) + +/** Returns this product as an iterable of type [T]. */ +fun Product1.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product2.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product3.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product4.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product5.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product6.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product7.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product8.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product9.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product10.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product11.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product12.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product13.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product14.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product15.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product16.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product17.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product18.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product19.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product20.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product21.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns this product as an iterable of type [T]. */ +fun Product22.asIterable(): Iterable = object : Iterable { override fun iterator(): Iterator = JavaConverters.asJavaIterator(productIterator().map { it as T }) } + +/** Returns list of type [T] for this product. */ +fun Product1.toList(): List = listOf(this._1()) + +/** Returns list of type [T] for this product. */ +fun Product2.toList(): List = listOf(this._1(), this._2()) + +/** Returns list of type [T] for this product. */ +fun Product3.toList(): List = listOf(this._1(), this._2(), this._3()) + +/** Returns list of type [T] for this product. */ +fun Product4.toList(): List = listOf(this._1(), this._2(), this._3(), this._4()) + +/** Returns list of type [T] for this product. */ +fun Product5.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5()) + +/** Returns list of type [T] for this product. */ +fun Product6.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6()) + +/** Returns list of type [T] for this product. */ +fun Product7.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7()) + +/** Returns list of type [T] for this product. */ +fun Product8.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8()) + +/** Returns list of type [T] for this product. */ +fun Product9.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9()) + +/** Returns list of type [T] for this product. */ +fun Product10.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10()) + +/** Returns list of type [T] for this product. */ +fun Product11.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11()) + +/** Returns list of type [T] for this product. */ +fun Product12.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12()) + +/** Returns list of type [T] for this product. */ +fun Product13.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13()) + +/** Returns list of type [T] for this product. */ +fun Product14.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14()) + +/** Returns list of type [T] for this product. */ +fun Product15.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15()) + +/** Returns list of type [T] for this product. */ +fun Product16.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16()) + +/** Returns list of type [T] for this product. */ +fun Product17.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17()) + +/** Returns list of type [T] for this product. */ +fun Product18.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18()) + +/** Returns list of type [T] for this product. */ +fun Product19.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19()) + +/** Returns list of type [T] for this product. */ +fun Product20.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20()) + +/** Returns list of type [T] for this product. */ +fun Product21.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21()) + +/** Returns list of type [T] for this product. */ +fun Product22.toList(): List = listOf(this._1(), this._2(), this._3(), this._4(), this._5(), this._6(), this._7(), this._8(), this._9(), this._10(), this._11(), this._12(), this._13(), this._14(), this._15(), this._16(), this._17(), this._18(), this._19(), this._20(), this._21(), this._22()) + + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product1.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product2.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product3.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product4.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product5.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product6.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product7.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product8.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product9.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product10.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product11.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product12.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product13.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product14.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product15.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product16.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product17.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product18.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product19.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product20.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product21.get(n: Int): T = productElement(n) as T + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @throws IndexOutOfBoundsException + * @return the element `n` elements after the first element + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product22.get(n: Int): T = productElement(n) as T + + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product1.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product2.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product3.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product4.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product5.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product6.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product7.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product8.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product9.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product10.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product11.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product12.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product13.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product14.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product15.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product16.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product17.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product18.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product19.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product20.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product21.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + +/** The n'th element of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param n the index of the element to return + * @return the element `n` elements after the first element, `null` if out of bounds + */ +fun Product22.getOrNull(n: Int): T? = (if (n in 0 until size) productElement(n) as T else null) + + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product1.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product2.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product3.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product4.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product5.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product6.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product7.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product8.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product9.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product10.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product11.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product12.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product13.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product14.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product15.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product16.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product17.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product18.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product19.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product20.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product21.get(indexRange: IntRange): List = indexRange.map(::get) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @throws IndexOutOfBoundsException + * @return the elements in [indexRange] + */ +@Throws(IndexOutOfBoundsException::class) +operator fun Product22.get(indexRange: IntRange): List = indexRange.map(::get) + + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product1.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product2.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product3.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product4.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product5.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product6.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product7.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product8.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product9.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product10.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product11.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product12.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product13.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product14.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product15.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product16.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product17.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product18.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product19.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product20.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product21.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) + +/** The range of n'th elements of this product, 0-based. In other words, for a + * product `A(x,,1,,, ..., x,,k,,)`, returns `x,,(n+1),,` where `0 <= n < k`. + * + * @param indexRange the indices of the elements to return + * @return the elements in [indexRange], `null` if out of bounds + */ +fun Product22.getOrNull(indexRange: IntRange): List = indexRange.map(::getOrNull) diff --git a/scala-tuples-in-kotlin/src/test/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TuplesTest.kt b/scala-tuples-in-kotlin/src/test/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TuplesTest.kt new file mode 100644 index 00000000..75d6f49a --- /dev/null +++ b/scala-tuples-in-kotlin/src/test/kotlin/org/jetbrains/kotlinx/spark/api/tuples/TuplesTest.kt @@ -0,0 +1,247 @@ +/*- + * =LICENSE= + * Kotlin Spark API: Scala Tuples in Kotlin + * ---------- + * Copyright (C) 2019 - 2022 JetBrains + * ---------- + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * =LICENSEEND= + */ +package org.jetbrains.kotlinx.spark.api.tuples + +import io.kotest.assertions.throwables.shouldThrow +import io.kotest.core.spec.style.ShouldSpec +import io.kotest.matchers.collections.shouldNotBeIn +import io.kotest.matchers.shouldBe +import io.kotest.matchers.shouldNotBe +import org.jetbrains.kotlinx.spark.api.tuples.* +import org.jetbrains.kotlinx.spark.api.* +import scala.Tuple3 +import io.kotest.matchers.types.shouldBeInstanceOf +import scala.Tuple1 +import scala.Tuple2 + +@Suppress("ShouldBeInstanceOfInspection", "RedundantLambdaArrow", "USELESS_IS_CHECK") +class TuplesTest : ShouldSpec({ + context("Test tuple extensions") { + + should("Support different ways to create tuples") { + listOf( + 1 X 2L X "3", + (1 X 2L) + "3", + 1 + (2L X "3"), + 1 + t() + 2L + "3", + t() + 1 + 2L + "3", + tupleOf() + 1 + 2L + "3", + EmptyTuple + 1 + 2L + "3", + emptyTuple() + 1 + 2L + "3", + t(1, 2L, "3"), + tupleOf(1, 2L, "3"), + t(1, 2L) + "3", + t(1, 2L) + t("3"), + t(1) + t(2L, "3"), + t(1) + t(2L) + t("3"), + t() + t(1, 2L, "3"), + t(1) + t() + t(2L, "3"), + t(1, 2L) + t() + t("3"), + t(1, 2L, "3") + t(), + 1 + t(2L) + "3", + 1 + t(2L, "3"), + Triple(1, 2L, "3").toTuple(), + (1 to 2L).toTuple().appendedBy("3"), + (2L to "3").toTuple().prependedBy(1), + ).forEach { + it shouldBe Tuple3(1, 2L, "3") + } + } + + should("Merge tuples with +, append/prepend other values") { + t() + 1 shouldBe t(1) + t(1) + 2L shouldBe t(1, 2L) + t(1, 2L) + "3" shouldBe t(1, 2L, "3") + 1 + t() shouldBe t(1) + 2L + t(1) shouldBe t(2L, 1) + 2L + t(1, "3") shouldBe t(2L, 1, "3") + + // NOTE! String.plus is a thing + "3" + t(1, 2L) shouldNotBe t("3", 1, 2L) + + t() + t(1) shouldBe t(1) + t(1) + t(2L) shouldBe t(1, 2L) + t(1, 2L) + t("3") shouldBe t(1, 2L, "3") + t(1) + t(2L, "3") shouldBe t(1, 2L, "3") + + t() concat t(1) shouldBe t(1) + t(1) concat t(2L) shouldBe t(1, 2L) + t(1, 2L) concat t("3") shouldBe t(1, 2L, "3") + t(1) concat t(2L, "3") shouldBe t(1, 2L, "3") + + // tuple inside other tuple + t().appendedBy(t(1)) shouldBe t(t(1)) + t() + t(t(1)) shouldBe t(t(1)) + t().prependedBy(t(1)) shouldBe t(t(1)) + t(t(1)) + t() shouldBe t(t(1)) + + t(1).appendedBy(t(2L)) shouldBe t(1, t(2L)) + t(1) + t(t(2L)) shouldBe t(1, t(2L)) + t(1).prependedBy(t(2L)) shouldBe t(t(2L), 1) + t(t(2L)) + t(1) shouldBe t(t(2L), 1) + } + + should("Have drop functions") { + t(1, 2L).dropLast() shouldBe t(1) + t(1, 2L).dropFirst() shouldBe t(2L) + t(1, 2L, "3").dropLast() shouldBe t(1, 2L) + t(1, 2L, "3").dropFirst() shouldBe t(2L, "3") + + t(1).dropLast() shouldBe emptyTuple() + t(1).dropFirst() shouldBe emptyTuple() + } + + should("Have Tuple destructuring") { + val (a: Int, b: Double, c: Long, d: String, e: Char, f: Float, g: Short, h: Byte, i: UInt, j: UByte, k: UShort, l: ULong) = + 1 X 2.0 X 3L X "4" X '5' X 6F X 7.toShort() X 8.toByte() X 9.toUInt() X 10.toUByte() X 11.toUShort() X 12.toULong() // etc... + a shouldBe 1 + b shouldBe 2.0 + c shouldBe 3L + d shouldBe "4" + e shouldBe '5' + f shouldBe 6F + g shouldBe 7.toShort() + h shouldBe 8.toByte() + i shouldBe 9.toUInt() + j shouldBe 10.toUByte() + k shouldBe 11.toUShort() + l shouldBe 12.toULong() + } + + should("Have other helpful extensions") { + (0 !in tupleOf()) shouldBe true + (1 in tupleOf(1, 2, 3)) shouldBe true + (0 !in tupleOf(1, 2, 3)) shouldBe true + tupleOf(1, 2, 3).iterator().asSequence().toSet() shouldBe setOf(1, 2, 3) + for (it in tupleOf(1, 1, 1)) { + it shouldBe 1 + } + tupleOf(1, 2, 3).toList().isNotEmpty() shouldBe true + tupleOf(1, 2, 3).asIterable().none { it > 4 } shouldBe true + tupleOf(1, 2, 3, 4, 5).size shouldBe 5 + tupleOf(1, 2, 3, 4)[0] shouldBe 1 + shouldThrow { tupleOf(1, 2L)[5] } + + tupleOf(1 to 3, arrayOf(1), A()).getOrNull(5).let { + (it is Any?) shouldBe true + it shouldBe null + } + + tupleOf(1, 2, 3).getOrNull(5).let { + (it is Int?) shouldBe true + it shouldBe null + } + + shouldThrow { tupleOf(1).getAs(5) } + shouldThrow { tupleOf(1).getAs(0) } + + tupleOf(1).getAsOrNull(5) shouldBe null + tupleOf(1).getAsOrNull(0) shouldBe null + + + tupleOf(1, 2, 3).toTriple() shouldBe Triple(1, 2, 3) + + tupleOf(1, 2, 3, 4, 5, 6, 7)[1..3].let { + it.shouldBeInstanceOf>() + it.containsAll(listOf(2, 3, 4)) shouldBe true + } + tupleOf(1, 1, 2)[1..2] shouldBe tupleOf(1, 2, 2)[0..1] + + tupleOf(1, 2, 3, 4, 5)[2] shouldBe 3 + + shouldThrow { tupleOf(1, 1, 2)[1..5] } + (null in tupleOf(1, 1, 2).getOrNull(1..5)) shouldBe true + + tupleOf(1, 2) shouldBe tupleOf(2, 1).swap() + tupleOf(1 to "Test") shouldBe tupleOf(1 to "Test") + val a: List = tupleOf(A(), B()).toList() + } + + should("Have copy methods for tuples, Kotlin data class style") { + t().copy() shouldBe t() + + t(1, 2).copy(_1 = 0) shouldBe t(0, 2) + t(1, 2).copy(_2 = 0) shouldBe t(1, 0) + + t(1, 2).copy() shouldBe t(1, 2) + t(1, 2, 3, 4, 5).copy() shouldBe t(1, 2, 3, 4, 5) + + // when specifying all parameters, the Scala version will be used + t(1, 2).copy(3, 4) shouldBe t(3, 4) + // unless explicitly giving parameters + t(1, 2).copy(_1 = 3, _2 = 4) shouldBe t(3, 4) + } + + should("Zip tuples") { + + (t(1, 2) zip t(3, 4)) shouldBe t(t(1, 3), t(2, 4)) + (t(1, 2, 3, 4, 5, 6) zip t("a", "b")) shouldBe t(t(1, "a"), t(2, "b")) + + (t(1, 2, 3, 4) zip t()) shouldBe t() + (t() zip t(1, 2, 3, 4)) shouldBe t() + + val a: Tuple2, Tuple2> = t("1", 2.0) zip t(3, 4L, "", "") + val b: Tuple3, Tuple2, Tuple2> = t("1", 2.0, 5f) zip t(3, 4L, "", "") + + val c: Tuple2, List>, Tuple2, Long>, Int>> = + t(1, mapOf(1 to "a")) zip t("13", 1L) zip t(listOf(null, 1), 1, 'c') + } + + should("Map tuples") { + t(1, 2.toShort(), 3L, 4.0, 5) + .map { it.toString() } + .shouldBe( + t("1", "2", "3", "4.0", "5") + ) + + shouldThrow { + t(1, "2", 3L).cast() + } + } + + should("Take n from tuples") { + t(1, 2, 3).take2() shouldBe t(1, 2) + t(1, 2, 3).takeLast2() shouldBe t(2, 3) + + t(1, 2, 3).take0() shouldBe t() + t(1, 2, 3).takeLast0() shouldBe t() + } + + should("Drop n from tuples") { + t(1, 2, 3).drop2() shouldBe t(3) + t(1, 2, 3).dropLast2() shouldBe t(1) + + t(1, 2, 3).drop0() shouldBe t(1, 2, 3) + t(1, 2, 3).dropLast0() shouldBe t(1, 2, 3) + } + + should("Split tuples") { + t(1, 2, 3, 4, 5).splitAt2() shouldBe t(t(1, 2), t(3, 4, 5)) + t(1, 2, 3, 4, 5).splitAt0() shouldBe t(t(), t(1, 2, 3, 4, 5)) + t(1, 2, 3, 4, 5).splitAt5() shouldBe t(t(1, 2, 3, 4, 5), t()) + } + + } +}) + +interface Super + +class A : Super +class B : Super