You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/11/17 15:21:33 UTC

[groovy] branch GROOVY-10374 updated (2e0e14e -> f2b988e)

This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a change to branch GROOVY-10374
in repository https://gitbox.apache.org/repos/asf/groovy.git.


 discard 2e0e14e  GROOVY-10374: Provide more tuple classes
     new f2b988e  GROOVY-10374: Provide more tuple classes

This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version.  This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:

 * -- * -- B -- O -- O -- O   (2e0e14e)
            \
             N -- N -- N   refs/heads/GROOVY-10374 (f2b988e)

You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.

Any revisions marked "omit" are not gone; other references still
refer to them.  Any revisions marked "discard" are gone forever.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/org/codehaus/groovy/ast/ClassHelper.java  | 62 ++++++++++++++++++++--
 1 file changed, 58 insertions(+), 4 deletions(-)

[groovy] 01/01: GROOVY-10374: Provide more tuple classes

Posted by su...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY-10374
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit f2b988e58c92f6c9995c19883eaad73116203e76
Author: Daniel Sun <su...@apache.org>
AuthorDate: Wed Nov 17 22:41:25 2021 +0800

    GROOVY-10374: Provide more tuple classes
---
 src/main/java/groovy/lang/Tuple17.java             |  145 +
 src/main/java/groovy/lang/Tuple18.java             |  151 +
 src/main/java/groovy/lang/Tuple19.java             |  157 +
 src/main/java/groovy/lang/Tuple20.java             |  163 +
 src/main/java/groovy/lang/Tuple21.java             |  169 +
 src/main/java/groovy/lang/Tuple22.java             |  175 +
 src/main/java/groovy/lang/Tuple23.java             |  181 +
 src/main/java/groovy/lang/Tuple24.java             |  187 +
 src/main/java/groovy/lang/Tuple25.java             |  193 +
 src/main/java/groovy/lang/Tuple26.java             |  199 +
 src/main/java/groovy/lang/Tuple27.java             |  205 +
 src/main/java/groovy/lang/Tuple28.java             |  211 +
 src/main/java/groovy/lang/Tuple29.java             |  217 +
 src/main/java/groovy/lang/Tuple30.java             |  223 +
 src/main/java/groovy/lang/Tuple31.java             |  229 +
 src/main/java/groovy/lang/Tuple32.java             |  235 +
 src/main/java/groovy/lang/Tuple33.java             |  241 ++
 src/main/java/groovy/lang/Tuple34.java             |  247 ++
 src/main/java/groovy/lang/Tuple35.java             |  253 ++
 src/main/java/groovy/lang/Tuple36.java             |  259 ++
 src/main/java/groovy/lang/Tuple37.java             |  265 ++
 src/main/java/groovy/lang/Tuple38.java             |  271 ++
 src/main/java/groovy/lang/Tuple39.java             |  277 ++
 src/main/java/groovy/lang/Tuple40.java             |  283 ++
 src/main/java/groovy/lang/Tuple41.java             |  289 ++
 src/main/java/groovy/lang/Tuple42.java             |  295 ++
 src/main/java/groovy/lang/Tuple43.java             |  301 ++
 src/main/java/groovy/lang/Tuple44.java             |  307 ++
 src/main/java/groovy/lang/Tuple45.java             |  313 ++
 src/main/java/groovy/lang/Tuple46.java             |  319 ++
 src/main/java/groovy/lang/Tuple47.java             |  325 ++
 src/main/java/groovy/lang/Tuple48.java             |  331 ++
 src/main/java/groovy/lang/Tuple49.java             |  337 ++
 src/main/java/groovy/lang/Tuple50.java             |  343 ++
 src/main/java/groovy/lang/Tuple51.java             |  349 ++
 src/main/java/groovy/lang/Tuple52.java             |  355 ++
 src/main/java/groovy/lang/Tuple53.java             |  361 ++
 src/main/java/groovy/lang/Tuple54.java             |  367 ++
 src/main/java/groovy/lang/Tuple55.java             |  373 ++
 src/main/java/groovy/lang/Tuple56.java             |  379 ++
 src/main/java/groovy/lang/Tuple57.java             |  385 ++
 src/main/java/groovy/lang/Tuple58.java             |  391 ++
 src/main/java/groovy/lang/Tuple59.java             |  397 ++
 src/main/java/groovy/lang/Tuple60.java             |  403 ++
 src/main/java/groovy/lang/Tuple61.java             |  409 ++
 src/main/java/groovy/lang/Tuple62.java             |  415 ++
 src/main/java/groovy/lang/Tuple63.java             |  421 ++
 src/main/java/groovy/lang/Tuple64.java             |  427 ++
 .../java/org/codehaus/groovy/ast/ClassHelper.java  |   62 +-
 src/test/groovy/lang/TupleTest.java                | 4569 +++++++++++++++++++-
 50 files changed, 18331 insertions(+), 28 deletions(-)

diff --git a/src/main/java/groovy/lang/Tuple17.java b/src/main/java/groovy/lang/Tuple17.java
new file mode 100644
index 0000000..90f2897
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple17.java
@@ -0,0 +1,145 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 17 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941665L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+
+    public Tuple17(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+    }
+
+    public Tuple17(Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    @Override
+    public Tuple17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> clone() {
+        return new Tuple17<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple18.java b/src/main/java/groovy/lang/Tuple18.java
new file mode 100644
index 0000000..d57f313
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple18.java
@@ -0,0 +1,151 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 18 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941666L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+
+    public Tuple18(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+    }
+
+    public Tuple18(Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    @Override
+    public Tuple18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> clone() {
+        return new Tuple18<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple19.java b/src/main/java/groovy/lang/Tuple19.java
new file mode 100644
index 0000000..6ebcbd6
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple19.java
@@ -0,0 +1,157 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 19 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941667L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+
+    public Tuple19(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+    }
+
+    public Tuple19(Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    @Override
+    public Tuple19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> clone() {
+        return new Tuple19<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple20.java b/src/main/java/groovy/lang/Tuple20.java
new file mode 100644
index 0000000..d3f6c12
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple20.java
@@ -0,0 +1,163 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 20 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941668L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+
+    public Tuple20(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+    }
+
+    public Tuple20(Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    @Override
+    public Tuple20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> clone() {
+        return new Tuple20<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple21.java b/src/main/java/groovy/lang/Tuple21.java
new file mode 100644
index 0000000..02224cb
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple21.java
@@ -0,0 +1,169 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 21 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941669L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+
+    public Tuple21(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+    }
+
+    public Tuple21(Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    @Override
+    public Tuple21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> clone() {
+        return new Tuple21<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple22.java b/src/main/java/groovy/lang/Tuple22.java
new file mode 100644
index 0000000..364eb0f
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple22.java
@@ -0,0 +1,175 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 22 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941670L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+
+    public Tuple22(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+    }
+
+    public Tuple22(Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    @Override
+    public Tuple22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> clone() {
+        return new Tuple22<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple23.java b/src/main/java/groovy/lang/Tuple23.java
new file mode 100644
index 0000000..3acadd9
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple23.java
@@ -0,0 +1,181 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 23 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941671L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+
+    public Tuple23(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+    }
+
+    public Tuple23(Tuple23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    @Override
+    public Tuple23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> clone() {
+        return new Tuple23<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple24.java b/src/main/java/groovy/lang/Tuple24.java
new file mode 100644
index 0000000..89cdae9
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple24.java
@@ -0,0 +1,187 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 24 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941672L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+
+    public Tuple24(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+    }
+
+    public Tuple24(Tuple24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    @Override
+    public Tuple24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> clone() {
+        return new Tuple24<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple25.java b/src/main/java/groovy/lang/Tuple25.java
new file mode 100644
index 0000000..1daed1c
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple25.java
@@ -0,0 +1,193 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 25 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941673L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+
+    public Tuple25(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+    }
+
+    public Tuple25(Tuple25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    @Override
+    public Tuple25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> clone() {
+        return new Tuple25<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple26.java b/src/main/java/groovy/lang/Tuple26.java
new file mode 100644
index 0000000..50c6584
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple26.java
@@ -0,0 +1,199 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 26 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941674L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+
+    public Tuple26(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+    }
+
+    public Tuple26(Tuple26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    @Override
+    public Tuple26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> clone() {
+        return new Tuple26<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple27.java b/src/main/java/groovy/lang/Tuple27.java
new file mode 100644
index 0000000..785af06
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple27.java
@@ -0,0 +1,205 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 27 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941675L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+
+    public Tuple27(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+    }
+
+    public Tuple27(Tuple27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    @Override
+    public Tuple27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> clone() {
+        return new Tuple27<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple28.java b/src/main/java/groovy/lang/Tuple28.java
new file mode 100644
index 0000000..9e02ea2
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple28.java
@@ -0,0 +1,211 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 28 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941676L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+
+    public Tuple28(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+    }
+
+    public Tuple28(Tuple28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    @Override
+    public Tuple28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> clone() {
+        return new Tuple28<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple29.java b/src/main/java/groovy/lang/Tuple29.java
new file mode 100644
index 0000000..7d6475b
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple29.java
@@ -0,0 +1,217 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 29 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941677L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+
+    public Tuple29(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+    }
+
+    public Tuple29(Tuple29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    @Override
+    public Tuple29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29> clone() {
+        return new Tuple29<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple30.java b/src/main/java/groovy/lang/Tuple30.java
new file mode 100644
index 0000000..85fa8d4
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple30.java
@@ -0,0 +1,223 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 30 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941678L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+
+    public Tuple30(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+    }
+
+    public Tuple30(Tuple30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    @Override
+    public Tuple30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30> clone() {
+        return new Tuple30<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple31.java b/src/main/java/groovy/lang/Tuple31.java
new file mode 100644
index 0000000..f96c5a6
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple31.java
@@ -0,0 +1,229 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 31 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941679L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+
+    public Tuple31(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+    }
+
+    public Tuple31(Tuple31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    @Override
+    public Tuple31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31> clone() {
+        return new Tuple31<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple32.java b/src/main/java/groovy/lang/Tuple32.java
new file mode 100644
index 0000000..6b9eba3
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple32.java
@@ -0,0 +1,235 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 32 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941680L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+
+    public Tuple32(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+    }
+
+    public Tuple32(Tuple32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    @Override
+    public Tuple32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32> clone() {
+        return new Tuple32<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple33.java b/src/main/java/groovy/lang/Tuple33.java
new file mode 100644
index 0000000..2c74732
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple33.java
@@ -0,0 +1,241 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 33 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941681L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+
+    public Tuple33(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+    }
+
+    public Tuple33(Tuple33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    @Override
+    public Tuple33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33> clone() {
+        return new Tuple33<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple34.java b/src/main/java/groovy/lang/Tuple34.java
new file mode 100644
index 0000000..f22ce43
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple34.java
@@ -0,0 +1,247 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 34 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941682L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+
+    public Tuple34(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+    }
+
+    public Tuple34(Tuple34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    @Override
+    public Tuple34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34> clone() {
+        return new Tuple34<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple35.java b/src/main/java/groovy/lang/Tuple35.java
new file mode 100644
index 0000000..ade805a
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple35.java
@@ -0,0 +1,253 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 35 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941683L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+
+    public Tuple35(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+    }
+
+    public Tuple35(Tuple35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    @Override
+    public Tuple35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35> clone() {
+        return new Tuple35<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple36.java b/src/main/java/groovy/lang/Tuple36.java
new file mode 100644
index 0000000..47f9d94
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple36.java
@@ -0,0 +1,259 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 36 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941684L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+
+    public Tuple36(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+    }
+
+    public Tuple36(Tuple36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    @Override
+    public Tuple36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> clone() {
+        return new Tuple36<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple37.java b/src/main/java/groovy/lang/Tuple37.java
new file mode 100644
index 0000000..c22d3d3
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple37.java
@@ -0,0 +1,265 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 37 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941685L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+
+    public Tuple37(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+    }
+
+    public Tuple37(Tuple37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    @Override
+    public Tuple37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> clone() {
+        return new Tuple37<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple38.java b/src/main/java/groovy/lang/Tuple38.java
new file mode 100644
index 0000000..401b964
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple38.java
@@ -0,0 +1,271 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 38 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941686L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+
+    public Tuple38(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+    }
+
+    public Tuple38(Tuple38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    @Override
+    public Tuple38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> clone() {
+        return new Tuple38<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple39.java b/src/main/java/groovy/lang/Tuple39.java
new file mode 100644
index 0000000..1a178b5
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple39.java
@@ -0,0 +1,277 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 39 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941687L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+
+    public Tuple39(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+    }
+
+    public Tuple39(Tuple39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    @Override
+    public Tuple39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> clone() {
+        return new Tuple39<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple40.java b/src/main/java/groovy/lang/Tuple40.java
new file mode 100644
index 0000000..ef0dd20
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple40.java
@@ -0,0 +1,283 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 40 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941688L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+
+    public Tuple40(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+    }
+
+    public Tuple40(Tuple40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    @Override
+    public Tuple40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> clone() {
+        return new Tuple40<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple41.java b/src/main/java/groovy/lang/Tuple41.java
new file mode 100644
index 0000000..b72beae
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple41.java
@@ -0,0 +1,289 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 41 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941689L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+
+    public Tuple41(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+    }
+
+    public Tuple41(Tuple41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    @Override
+    public Tuple41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> clone() {
+        return new Tuple41<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple42.java b/src/main/java/groovy/lang/Tuple42.java
new file mode 100644
index 0000000..021dc4d
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple42.java
@@ -0,0 +1,295 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 42 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941690L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+
+    public Tuple42(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+    }
+
+    public Tuple42(Tuple42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    @Override
+    public Tuple42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> clone() {
+        return new Tuple42<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple43.java b/src/main/java/groovy/lang/Tuple43.java
new file mode 100644
index 0000000..e861cae
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple43.java
@@ -0,0 +1,301 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 43 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941691L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+
+    public Tuple43(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+    }
+
+    public Tuple43(Tuple43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    @Override
+    public Tuple43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43> clone() {
+        return new Tuple43<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple44.java b/src/main/java/groovy/lang/Tuple44.java
new file mode 100644
index 0000000..2af3420
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple44.java
@@ -0,0 +1,307 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 44 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941692L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+
+    public Tuple44(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+    }
+
+    public Tuple44(Tuple44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    @Override
+    public Tuple44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44> clone() {
+        return new Tuple44<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple45.java b/src/main/java/groovy/lang/Tuple45.java
new file mode 100644
index 0000000..feea1ba
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple45.java
@@ -0,0 +1,313 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 45 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941693L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+
+    public Tuple45(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+    }
+
+    public Tuple45(Tuple45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tuple.v45);
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    @Override
+    public Tuple45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45> clone() {
+        return new Tuple45<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple46.java b/src/main/java/groovy/lang/Tuple46.java
new file mode 100644
index 0000000..a2b86f6
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple46.java
@@ -0,0 +1,319 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 46 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941694L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+
+    public Tuple46(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+    }
+
+    public Tuple46(Tuple46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    @Override
+    public Tuple46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46> clone() {
+        return new Tuple46<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple47.java b/src/main/java/groovy/lang/Tuple47.java
new file mode 100644
index 0000000..15ce29e
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple47.java
@@ -0,0 +1,325 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 47 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941695L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+
+    public Tuple47(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+    }
+
+    public Tuple47(Tuple47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    @Override
+    public Tuple47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47> clone() {
+        return new Tuple47<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple48.java b/src/main/java/groovy/lang/Tuple48.java
new file mode 100644
index 0000000..8fd2f08
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple48.java
@@ -0,0 +1,331 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 48 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941696L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+
+    public Tuple48(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+    }
+
+    public Tuple48(Tuple48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    @Override
+    public Tuple48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48> clone() {
+        return new Tuple48<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple49.java b/src/main/java/groovy/lang/Tuple49.java
new file mode 100644
index 0000000..305f859
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple49.java
@@ -0,0 +1,337 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 49 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941697L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+
+    public Tuple49(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+    }
+
+    public Tuple49(Tuple49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    @Override
+    public Tuple49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49> clone() {
+        return new Tuple49<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple50.java b/src/main/java/groovy/lang/Tuple50.java
new file mode 100644
index 0000000..d59001c
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple50.java
@@ -0,0 +1,343 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 50 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941698L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+    private final T50 v50;
+
+    public Tuple50(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+        this.v50 = v50;
+    }
+
+    public Tuple50(Tuple50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    public T50 getV50() {
+        return v50;
+    }
+
+    @Override
+    public Tuple50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> clone() {
+        return new Tuple50<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple51.java b/src/main/java/groovy/lang/Tuple51.java
new file mode 100644
index 0000000..28a6287
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple51.java
@@ -0,0 +1,349 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 51 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple51<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941699L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+    private final T50 v50;
+    private final T51 v51;
+
+    public Tuple51(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50, T51 v51) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+        this.v50 = v50;
+        this.v51 = v51;
+    }
+
+    public Tuple51(Tuple51<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    public T50 getV50() {
+        return v50;
+    }
+
+    public T51 getV51() {
+        return v51;
+    }
+
+    @Override
+    public Tuple51<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51> clone() {
+        return new Tuple51<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple52.java b/src/main/java/groovy/lang/Tuple52.java
new file mode 100644
index 0000000..803132e
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple52.java
@@ -0,0 +1,355 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 52 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple52<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941700L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+    private final T50 v50;
+    private final T51 v51;
+    private final T52 v52;
+
+    public Tuple52(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50, T51 v51, T52 v52) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+        this.v50 = v50;
+        this.v51 = v51;
+        this.v52 = v52;
+    }
+
+    public Tuple52(Tuple52<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    public T50 getV50() {
+        return v50;
+    }
+
+    public T51 getV51() {
+        return v51;
+    }
+
+    public T52 getV52() {
+        return v52;
+    }
+
+    @Override
+    public Tuple52<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52> clone() {
+        return new Tuple52<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple53.java b/src/main/java/groovy/lang/Tuple53.java
new file mode 100644
index 0000000..4d77fa3
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple53.java
@@ -0,0 +1,361 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 53 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple53<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941701L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+    private final T50 v50;
+    private final T51 v51;
+    private final T52 v52;
+    private final T53 v53;
+
+    public Tuple53(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50, T51 v51, T52 v52, T53 v53) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+        this.v50 = v50;
+        this.v51 = v51;
+        this.v52 = v52;
+        this.v53 = v53;
+    }
+
+    public Tuple53(Tuple53<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    public T50 getV50() {
+        return v50;
+    }
+
+    public T51 getV51() {
+        return v51;
+    }
+
+    public T52 getV52() {
+        return v52;
+    }
+
+    public T53 getV53() {
+        return v53;
+    }
+
+    @Override
+    public Tuple53<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53> clone() {
+        return new Tuple53<>(this);
+    }
+}
diff --git a/src/main/java/groovy/lang/Tuple54.java b/src/main/java/groovy/lang/Tuple54.java
new file mode 100644
index 0000000..ff8deaa
--- /dev/null
+++ b/src/main/java/groovy/lang/Tuple54.java
@@ -0,0 +1,367 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.
+ */
+
+package groovy.lang;
+
+/**
+ * Represents a list of 54 typed Objects.
+ *
+ * @since 4.0.0
+ */
+public final class Tuple54<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53, T54> extends Tuple {
+    private static final long serialVersionUID = -8866382365396941702L;
+    private final T1 v1;
+    private final T2 v2;
+    private final T3 v3;
+    private final T4 v4;
+    private final T5 v5;
+    private final T6 v6;
+    private final T7 v7;
+    private final T8 v8;
+    private final T9 v9;
+    private final T10 v10;
+    private final T11 v11;
+    private final T12 v12;
+    private final T13 v13;
+    private final T14 v14;
+    private final T15 v15;
+    private final T16 v16;
+    private final T17 v17;
+    private final T18 v18;
+    private final T19 v19;
+    private final T20 v20;
+    private final T21 v21;
+    private final T22 v22;
+    private final T23 v23;
+    private final T24 v24;
+    private final T25 v25;
+    private final T26 v26;
+    private final T27 v27;
+    private final T28 v28;
+    private final T29 v29;
+    private final T30 v30;
+    private final T31 v31;
+    private final T32 v32;
+    private final T33 v33;
+    private final T34 v34;
+    private final T35 v35;
+    private final T36 v36;
+    private final T37 v37;
+    private final T38 v38;
+    private final T39 v39;
+    private final T40 v40;
+    private final T41 v41;
+    private final T42 v42;
+    private final T43 v43;
+    private final T44 v44;
+    private final T45 v45;
+    private final T46 v46;
+    private final T47 v47;
+    private final T48 v48;
+    private final T49 v49;
+    private final T50 v50;
+    private final T51 v51;
+    private final T52 v52;
+    private final T53 v53;
+    private final T54 v54;
+
+    public Tuple54(T1 v1, T2 v2, T3 v3, T4 v4, T5 v5, T6 v6, T7 v7, T8 v8, T9 v9, T10 v10, T11 v11, T12 v12, T13 v13, T14 v14, T15 v15, T16 v16, T17 v17, T18 v18, T19 v19, T20 v20, T21 v21, T22 v22, T23 v23, T24 v24, T25 v25, T26 v26, T27 v27, T28 v28, T29 v29, T30 v30, T31 v31, T32 v32, T33 v33, T34 v34, T35 v35, T36 v36, T37 v37, T38 v38, T39 v39, T40 v40, T41 v41, T42 v42, T43 v43, T44 v44, T45 v45, T46 v46, T47 v47, T48 v48, T49 v49, T50 v50, T51 v51, T52 v52, T53 v53, T54 v54) {
+        super(v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54);
+
+        this.v1 = v1;
+        this.v2 = v2;
+        this.v3 = v3;
+        this.v4 = v4;
+        this.v5 = v5;
+        this.v6 = v6;
+        this.v7 = v7;
+        this.v8 = v8;
+        this.v9 = v9;
+        this.v10 = v10;
+        this.v11 = v11;
+        this.v12 = v12;
+        this.v13 = v13;
+        this.v14 = v14;
+        this.v15 = v15;
+        this.v16 = v16;
+        this.v17 = v17;
+        this.v18 = v18;
+        this.v19 = v19;
+        this.v20 = v20;
+        this.v21 = v21;
+        this.v22 = v22;
+        this.v23 = v23;
+        this.v24 = v24;
+        this.v25 = v25;
+        this.v26 = v26;
+        this.v27 = v27;
+        this.v28 = v28;
+        this.v29 = v29;
+        this.v30 = v30;
+        this.v31 = v31;
+        this.v32 = v32;
+        this.v33 = v33;
+        this.v34 = v34;
+        this.v35 = v35;
+        this.v36 = v36;
+        this.v37 = v37;
+        this.v38 = v38;
+        this.v39 = v39;
+        this.v40 = v40;
+        this.v41 = v41;
+        this.v42 = v42;
+        this.v43 = v43;
+        this.v44 = v44;
+        this.v45 = v45;
+        this.v46 = v46;
+        this.v47 = v47;
+        this.v48 = v48;
+        this.v49 = v49;
+        this.v50 = v50;
+        this.v51 = v51;
+        this.v52 = v52;
+        this.v53 = v53;
+        this.v54 = v54;
+    }
+
+    public Tuple54(Tuple54<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45, T46, T47, T48, T49, T50, T51, T52, T53, T54> tuple) {
+        this(tuple.v1, tuple.v2, tuple.v3, tuple.v4, tuple.v5, tuple.v6, tuple.v7, tuple.v8, tuple.v9, tuple.v10, tuple.v11, tuple.v12, tuple.v13, tuple.v14, tuple.v15, tuple.v16, tuple.v17, tuple.v18, tuple.v19, tuple.v20, tuple.v21, tuple.v22, tuple.v23, tuple.v24, tuple.v25, tuple.v26, tuple.v27, tuple.v28, tuple.v29, tuple.v30, tuple.v31, tuple.v32, tuple.v33, tuple.v34, tuple.v35, tuple.v36, tuple.v37, tuple.v38, tuple.v39, tuple.v40, tuple.v41, tuple.v42, tuple.v43, tuple.v44, tupl [...]
+    }
+
+    public T1 getV1() {
+        return v1;
+    }
+
+    public T2 getV2() {
+        return v2;
+    }
+
+    public T3 getV3() {
+        return v3;
+    }
+
+    public T4 getV4() {
+        return v4;
+    }
+
+    public T5 getV5() {
+        return v5;
+    }
+
+    public T6 getV6() {
+        return v6;
+    }
+
+    public T7 getV7() {
+        return v7;
+    }
+
+    public T8 getV8() {
+        return v8;
+    }
+
+    public T9 getV9() {
+        return v9;
+    }
+
+    public T10 getV10() {
+        return v10;
+    }
+
+    public T11 getV11() {
+        return v11;
+    }
+
+    public T12 getV12() {
+        return v12;
+    }
+
+    public T13 getV13() {
+        return v13;
+    }
+
+    public T14 getV14() {
+        return v14;
+    }
+
+    public T15 getV15() {
+        return v15;
+    }
+
+    public T16 getV16() {
+        return v16;
+    }
+
+    public T17 getV17() {
+        return v17;
+    }
+
+    public T18 getV18() {
+        return v18;
+    }
+
+    public T19 getV19() {
+        return v19;
+    }
+
+    public T20 getV20() {
+        return v20;
+    }
+
+    public T21 getV21() {
+        return v21;
+    }
+
+    public T22 getV22() {
+        return v22;
+    }
+
+    public T23 getV23() {
+        return v23;
+    }
+
+    public T24 getV24() {
+        return v24;
+    }
+
+    public T25 getV25() {
+        return v25;
+    }
+
+    public T26 getV26() {
+        return v26;
+    }
+
+    public T27 getV27() {
+        return v27;
+    }
+
+    public T28 getV28() {
+        return v28;
+    }
+
+    public T29 getV29() {
+        return v29;
+    }
+
+    public T30 getV30() {
+        return v30;
+    }
+
+    public T31 getV31() {
+        return v31;
+    }
+
+    public T32 getV32() {
+        return v32;
+    }
+
+    public T33 getV33() {
+        return v33;
+    }
+
+    public T34 getV34() {
+        return v34;
+    }
+
+    public T35 getV35() {
+        return v35;
+    }
+
+    public T36 getV36() {
+        return v36;
+    }
+
+    public T37 getV37() {
+        return v37;
+    }
+
+    public T38 getV38() {
+        return v38;
+    }
+
+    public T39 getV39() {
+        return v39;
+    }
+
+    public T40 getV40() {
+        return v40;
+    }
+
+    public T41 getV41() {
+        return v41;
+    }
+
+    public T42 getV42() {
+        return v42;
+    }
+
+    public T43 getV43() {
+        return v43;
+    }
+
+    public T44 getV44() {
+        return v44;
+    }
+
+    public T45 getV45() {
+        return v45;
+    }
+
+    public T46 getV46() {
+        return v46;
+    }
+
+    public T47 getV47() {
+        return v47;
+    }
+
+    public T48 getV48() {
+        return v48;
+    }
+
+    public T49 getV49() {
+        return v49;
+    }
+
+    public T50 getV50() {
+        return v50;
+    }
+
+    public T51 getV51() {
+        return v51;
+    }
+
+    public T52 getV52() {
+        return v52;
+    }
... 8808 lines suppressed ...