You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by bl...@apache.org on 2026/08/06 23:23:22 UTC
(groovy) 01/01: GroovyABI annotation to mark mainly methods as used through the compiler and have special requirements for backwards compatibility
This is an automated email from the ASF dual-hosted git repository.
blackdrag pushed a commit to branch feature/Groovy_abi
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit ce12a74a721943d1c44a77c09378b9931674f180
Author: Jochen Theodorou <jo...@karakun.com>
AuthorDate: Fri Aug 7 01:19:47 2026 +0200
GroovyABI annotation to mark mainly methods as used through the compiler and have special requirements for backwards compatibility
---
src/main/java/groovy/concurrent/Awaitable.java | 2 +
src/main/java/groovy/lang/Closure.java | 2 +
src/main/java/groovy/lang/Reference.java | 3 +
.../groovy/ast/tools/ConstructorNodeUtils.java | 2 +
.../apache/groovy/lang/annotation/GroovyABI.java | 61 ++++++++++++
.../apache/groovy/runtime/async/AsyncSupport.java | 13 +++
.../transform/copywith/NestedCopyWithSupport.java | 3 +
src/main/java/org/apache/groovy/util/Maps.java | 102 +++++++++++++++++++++
.../classgen/asm/BinaryExpressionHelper.java | 1 -
.../groovy/classgen/asm/ClosureWriter.java | 1 -
.../classgen/asm/sc/StaticTypesCallSiteWriter.java | 3 +-
.../org/codehaus/groovy/reflection/ClassInfo.java | 3 +
.../codehaus/groovy/runtime/CurriedClosure.java | 2 +
.../groovy/runtime/DefaultGroovyMethods.java | 14 +++
.../org/codehaus/groovy/runtime/FormatHelper.java | 3 +
.../org/codehaus/groovy/runtime/GStringImpl.java | 2 +
.../org/codehaus/groovy/runtime/InvokerHelper.java | 10 ++
.../groovy/runtime/MultipleAssignmentSupport.java | 3 +
.../groovy/runtime/ScriptBytecodeAdapter.java | 5 +
.../groovy/runtime/StringGroovyMethods.java | 2 +
.../groovy/runtime/dgmimpl/NumberNumberDiv.java | 2 +
.../groovy/runtime/dgmimpl/NumberNumberMinus.java | 2 +
.../runtime/dgmimpl/NumberNumberMultiply.java | 2 +
.../runtime/powerassert/AssertionRenderer.java | 2 +
.../groovy/runtime/powerassert/ValueRecorder.java | 4 +
.../typehandling/DefaultTypeTransformation.java | 18 ++++
.../groovy/runtime/typehandling/NumberMath.java | 10 ++
.../transform/ImmutableASTTransformation.java | 5 +-
.../org/codehaus/groovy/util/HashCodeHelper.java | 23 +++++
.../codehaus/groovy/vmplugin/v7/IndyInterface.java | 2 +
.../codehaus/groovy/vmplugin/v8/IndyInterface.java | 5 +
.../codehaus/groovy/runtime/callsite/CallSite.java | 31 +++++++
.../groovy/runtime/callsite/CallSiteArray.java | 2 +
.../apache/groovy/contracts/ViolationTracker.java | 10 ++
.../groovy/contracts/generation/Configurator.java | 3 +
.../generation/ContractExecutionTracker.java | 3 +
.../apache/groovy/contracts/util/FieldValues.java | 4 +
.../provider/collection/runtime/NamedRecord.groovy | 2 +
.../provider/collection/runtime/Queryable.java | 5 +
.../collection/runtime/QueryableHelper.groovy | 8 ++
.../collection/runtime/WindowDefinition.java | 12 +++
.../groovy/macro/runtime/MacroBuilder.java | 4 +
42 files changed, 391 insertions(+), 5 deletions(-)
diff --git a/src/main/java/groovy/concurrent/Awaitable.java b/src/main/java/groovy/concurrent/Awaitable.java
index bb941cd1e7..782b899227 100644
--- a/src/main/java/groovy/concurrent/Awaitable.java
+++ b/src/main/java/groovy/concurrent/Awaitable.java
@@ -18,6 +18,7 @@
*/
package groovy.concurrent;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.runtime.async.AsyncSupport;
import org.apache.groovy.runtime.async.GroovyPromise;
@@ -416,6 +417,7 @@ public interface Awaitable<T> {
* @param sources the awaitables, futures, or adapted objects to wait for
* @return an awaitable that resolves to a list of results
*/
+ @GroovyABI(since="6.0.0")
static Awaitable<List<Object>> all(Object... sources) {
return AsyncSupport.allAsync(sources);
}
diff --git a/src/main/java/groovy/lang/Closure.java b/src/main/java/groovy/lang/Closure.java
index bb7f50010d..9a3b638f89 100644
--- a/src/main/java/groovy/lang/Closure.java
+++ b/src/main/java/groovy/lang/Closure.java
@@ -20,6 +20,7 @@ package groovy.lang;
import org.apache.groovy.internal.util.UncheckedThrow;
import org.apache.groovy.io.StringBuilderWriter;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.util.Maps;
import org.codehaus.groovy.reflection.ReflectionCache;
import org.codehaus.groovy.reflection.stdclasses.CachedClosureClass;
@@ -345,6 +346,7 @@ public abstract class Closure<V> extends GroovyObjectSupport implements Cloneabl
*
* @return the lexical {@code this} object
*/
+ @GroovyABI(since = "1.0")
public Object getThisObject() {
return thisObject;
}
diff --git a/src/main/java/groovy/lang/Reference.java b/src/main/java/groovy/lang/Reference.java
index f54f9b5c01..8fa5c759ba 100644
--- a/src/main/java/groovy/lang/Reference.java
+++ b/src/main/java/groovy/lang/Reference.java
@@ -18,6 +18,7 @@
*/
package groovy.lang;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.InvokerHelper;
import java.io.Serial;
@@ -96,6 +97,7 @@ public class Reference<T> extends GroovyObjectSupport implements Serializable {
*
* @return the referenced value
*/
+ @GroovyABI(since = "1.0")
public T get() {
return value;
}
@@ -105,6 +107,7 @@ public class Reference<T> extends GroovyObjectSupport implements Serializable {
*
* @param value the new value
*/
+ @GroovyABI(since = "1.0")
public void set(T value) {
this.value = value;
}
diff --git a/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
index 63ca17af78..19636cbb5f 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
@@ -18,6 +18,7 @@
*/
package org.apache.groovy.ast.tools;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
import org.codehaus.groovy.ast.Parameter;
@@ -97,6 +98,7 @@ public class ConstructorNodeUtils {
* @param props the properties accepted by the constructor
* @return a statement that performs the validation
*/
+ @GroovyABI(since="4.0.0")
public static Statement checkPropNamesS(final VariableExpression namedArgs, final boolean pojo, final List<PropertyNode> props) {
if (!pojo) {
return stmt(callX(IMMUTABLE_TYPE, "checkPropNames", args(varX("this"), namedArgs)));
diff --git a/src/main/java/org/apache/groovy/lang/annotation/GroovyABI.java b/src/main/java/org/apache/groovy/lang/annotation/GroovyABI.java
new file mode 100644
index 0000000000..e397df8d97
--- /dev/null
+++ b/src/main/java/org/apache/groovy/lang/annotation/GroovyABI.java
@@ -0,0 +1,61 @@
+/*
+ * 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 org.apache.groovy.lang.annotation;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Marks a program element as part of Groovy's binary ABI.
+ * <p>
+ * Elements annotated with {@code @GroovyABI} may be referenced directly by
+ * bytecode generated by the Groovy compiler. Their signatures and semantics
+ * therefore form part of the compatibility contract between compiled Groovy
+ * classes and the Groovy runtime.
+ * <p>
+ * Changes to annotated elements must preserve binary compatibility with
+ * previously compiled Groovy code unless the corresponding compatibility
+ * guarantee is intentionally dropped.
+ * <p>
+ * This annotation is intended only for members that are referenced by
+ * bytecode which may outlive the compiler version that produced it. Members
+ * used exclusively by bytecode generated at runtime by the current Groovy
+ * version should not be annotated.
+ * <p>
+ * Notes:
+ * <li>groovy.*: These classes are not annotated, as they are part of public API
+ * <li>runtime packages: These classes are normally internal and subject
+ * to removal or change. These classes must use this annotation if any of their methods
+ * is referenced by the compiler.
+ * <li>AST helper classes not in runtime: Some AST transforms leverage helper classes, that
+ * are not in a runtime package. These classes must be annotated.
+ */
+@Documented
+@Target({TYPE, METHOD, CONSTRUCTOR, FIELD})
+@Retention(SOURCE)
+public @interface GroovyABI {
+ String since() default "";
+}
diff --git a/src/main/java/org/apache/groovy/runtime/async/AsyncSupport.java b/src/main/java/org/apache/groovy/runtime/async/AsyncSupport.java
index 6c78b0990b..0328ab6dd5 100644
--- a/src/main/java/org/apache/groovy/runtime/async/AsyncSupport.java
+++ b/src/main/java/org/apache/groovy/runtime/async/AsyncSupport.java
@@ -21,6 +21,7 @@ package org.apache.groovy.runtime.async;
import groovy.concurrent.AwaitResult;
import groovy.concurrent.Awaitable;
import groovy.concurrent.AwaitableAdapterRegistry;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.io.Closeable;
import java.lang.reflect.InvocationTargetException;
@@ -120,6 +121,7 @@ public class AsyncSupport {
* Blocks the calling thread until the computation completes.
* The original exception is rethrown transparently.
*/
+ @GroovyABI(since="6.0.0")
public static <T> T await(Awaitable<T> awaitable) {
try {
return awaitable.get();
@@ -131,6 +133,7 @@ public class AsyncSupport {
}
/** Awaits a {@link CompletableFuture} using non-interruptible {@code join()}. */
+ @GroovyABI(since="6.0.0")
public static <T> T await(CompletableFuture<T> future) {
try {
return future.join();
@@ -142,11 +145,13 @@ public class AsyncSupport {
}
/** Awaits a {@link CompletionStage} by converting to CompletableFuture. */
+ @GroovyABI(since="6.0.0")
public static <T> T await(CompletionStage<T> stage) {
return await(stage.toCompletableFuture());
}
/** Awaits a {@link Future}. Delegates to the CF overload if applicable. */
+ @GroovyABI(since="6.0.0")
public static <T> T await(Future<T> future) {
if (future instanceof CompletableFuture<T> cf) {
return await(cf);
@@ -171,6 +176,7 @@ public class AsyncSupport {
* {@code CompletionStage}, and {@code Future} when a value implements more
* than one of them (e.g. {@link CompletableFuture}).
*/
+ @GroovyABI(since="6.0.0")
@SuppressWarnings("unchecked")
public static <T> T await(Object source) {
if (source == null) return null;
@@ -202,6 +208,7 @@ public class AsyncSupport {
/**
* Executes the given supplier asynchronously using the default executor.
*/
+ @GroovyABI(since="6.0.0")
public static <T> Awaitable<T> async(Supplier<T> supplier) {
return executeAsync(supplier, AsyncExecutors.getExecutor());
}
@@ -221,6 +228,7 @@ public class AsyncSupport {
* Called by compiler-generated code at the start of closures
* containing {@code defer} statements.
*/
+ @GroovyABI(since="6.0.0")
public static Deque<Callable<?>> createDeferScope() {
return new ArrayDeque<>();
}
@@ -229,6 +237,7 @@ public class AsyncSupport {
* Registers a deferred action in the given scope. Actions execute in LIFO
* order when {@link #executeDeferScope} is called (in the finally block).
*/
+ @GroovyABI(since="6.0.0")
public static void defer(Deque<Callable<?>> scope,
Callable<?> action) {
if (scope == null) {
@@ -287,6 +296,7 @@ public class AsyncSupport {
* @param bridge the GeneratorBridge instance (injected as synthetic parameter)
* @param value the value to yield
*/
+ @GroovyABI(since="6.0.0")
public static void yieldReturn(Object bridge, Object value) {
if (!(bridge instanceof GeneratorBridge<?>)) {
throw new IllegalStateException("yield return can only be used inside an async generator");
@@ -307,6 +317,7 @@ public class AsyncSupport {
* @param <T> the element type
* @return an Iterable that yields values from the generator
*/
+ @GroovyABI(since="6.0.0")
public static <T> Iterable<T> asyncGenerator(Consumer<Object> body) {
Objects.requireNonNull(body, "body must not be null");
GeneratorBridge<T> bridge = new GeneratorBridge<>();
@@ -335,6 +346,7 @@ public class AsyncSupport {
* @param <T> the element type
* @return an iterable
*/
+ @GroovyABI(since="6.0.0")
@SuppressWarnings("unchecked")
public static <T> Iterable<T> toIterable(Object source) {
if (source == null) return Collections.emptyList();
@@ -354,6 +366,7 @@ public class AsyncSupport {
* cannot mask the original loop error; prefer robust {@code close()}
* implementations.
*/
+ @GroovyABI(since="6.0.0")
public static void closeIterable(Object source) {
if (source instanceof Closeable c) {
try {
diff --git a/src/main/java/org/apache/groovy/transform/copywith/NestedCopyWithSupport.java b/src/main/java/org/apache/groovy/transform/copywith/NestedCopyWithSupport.java
index 70f697b421..fe7ac4aab4 100644
--- a/src/main/java/org/apache/groovy/transform/copywith/NestedCopyWithSupport.java
+++ b/src/main/java/org/apache/groovy/transform/copywith/NestedCopyWithSupport.java
@@ -20,6 +20,7 @@ package org.apache.groovy.transform.copywith;
import groovy.lang.Closure;
import groovy.lang.GroovyRuntimeException;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.lang.annotation.Incubating;
import org.codehaus.groovy.runtime.InvokerHelper;
@@ -52,6 +53,7 @@ public final class NestedCopyWithSupport {
* (nested-aware) {@code copyWith(Map)}. The block is thus pure sugar over
* the map form, inheriting its closed-type-domain and identity guarantees.
*/
+ @GroovyABI(since="6.0.0")
public static Object applyBlock(final Object self, final Closure<?> block) {
Map<Object, Object> sink = new LinkedHashMap<>();
Closure<?> c = (Closure<?>) block.clone();
@@ -63,6 +65,7 @@ public final class NestedCopyWithSupport {
}
@SuppressWarnings("unchecked")
+ @GroovyABI(since="6.0.0")
public static Map<Object, Object> flatten(final Object self, final Map<Object, Object> raw) {
if (raw == null) return new LinkedHashMap<>();
Map<Object, Object> flat = new LinkedHashMap<>();
diff --git a/src/main/java/org/apache/groovy/util/Maps.java b/src/main/java/org/apache/groovy/util/Maps.java
index ff9c8b382b..0298ec5504 100644
--- a/src/main/java/org/apache/groovy/util/Maps.java
+++ b/src/main/java/org/apache/groovy/util/Maps.java
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.util;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -31,6 +33,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -42,6 +45,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -54,6 +58,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -67,6 +72,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -81,6 +87,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -96,6 +103,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -112,6 +120,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -129,6 +138,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -147,6 +157,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -166,6 +177,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -186,6 +198,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -207,6 +220,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -229,6 +243,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -252,6 +267,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -276,6 +292,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -301,6 +318,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -327,6 +345,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -354,6 +373,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -382,6 +402,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -411,6 +432,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -441,6 +463,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -472,6 +495,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -504,6 +528,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -537,6 +562,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -571,6 +597,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -606,6 +633,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -642,6 +670,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -679,6 +708,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -717,6 +747,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -756,6 +787,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -796,6 +828,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -837,6 +870,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -879,6 +913,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -922,6 +957,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v34) {
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -966,6 +1002,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1011,6 +1048,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1057,6 +1095,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1104,6 +1143,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1152,6 +1192,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1201,6 +1242,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1251,6 +1293,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1302,6 +1345,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1354,6 +1398,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1407,6 +1452,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1461,6 +1507,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1516,6 +1563,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1572,6 +1620,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1629,6 +1678,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1687,6 +1737,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1746,6 +1797,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1806,6 +1858,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1867,6 +1920,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1929,6 +1983,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -1992,6 +2047,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2056,6 +2112,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2121,6 +2178,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2187,6 +2245,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2254,6 +2313,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2322,6 +2382,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2391,6 +2452,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2461,6 +2523,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2532,6 +2595,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2604,6 +2668,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2677,6 +2742,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2751,6 +2817,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2826,6 +2893,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2902,6 +2970,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -2979,6 +3048,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3057,6 +3127,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3136,6 +3207,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3216,6 +3288,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3297,6 +3370,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3379,6 +3453,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3462,6 +3537,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3546,6 +3622,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3631,6 +3708,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3717,6 +3795,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3804,6 +3883,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3892,6 +3972,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -3981,6 +4062,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4071,6 +4153,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4162,6 +4245,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4254,6 +4338,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4347,6 +4432,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4441,6 +4527,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4536,6 +4623,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4632,6 +4720,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4729,6 +4818,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4827,6 +4917,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -4926,6 +5017,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5026,6 +5118,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5127,6 +5220,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5229,6 +5323,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5332,6 +5427,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5436,6 +5532,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5541,6 +5638,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5647,6 +5745,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5754,6 +5853,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5862,6 +5962,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
@@ -5971,6 +6072,7 @@ public class Maps {
/**
* Returns an immutable map containing the supplied key-value pairs in encounter order.
*/
+ @GroovyABI(since="2.5.0")
public static <K, V> Map<K, V> of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10, K k11, V v11, K k12, V v12, K k13, V v13, K k14, V v14, K k15, V v15, K k16, V v16, K k17, V v17, K k18, V v18, K k19, V v19, K k20, V v20, K k21, V v21, K k22, V v22, K k23, V v23, K k24, V v24, K k25, V v25, K k26, V v26, K k27, V v27, K k28, V v28, K k29, V v29, K k30, V v30, K k31, V v31, K k32, V v32, K k33, V v33, K k34, V v [...]
Map<K, V> map = new LinkedHashMap<K, V>();
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionHelper.java
index 01c3e3dac3..b9401a52df 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionHelper.java
@@ -583,7 +583,6 @@ public class BinaryExpressionHelper {
VariableExpression var = (VariableExpression) leftExpression;
if (var.isClosureSharedVariable() && ClassHelper.isPrimitiveType(rhsType)) {
// GROOVY-5570: if a closure shared variable is a primitive type, it must be boxed
- rhsType = ClassHelper.getWrapper(rhsType);
operandStack.box();
}
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
index 4462f7aad5..8539725781 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ClosureWriter.java
@@ -82,7 +82,6 @@ import java.util.Set;
import static org.apache.groovy.ast.tools.ClassNodeUtils.addGeneratedMethod;
import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
import static org.codehaus.groovy.ast.tools.GeneralUtils.callThisX;
-import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.constX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.ctorSuperX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.nullX;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 577c09d23f..5d45251f28 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -584,9 +584,8 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter {
writePowerCall(receiver, argument, rType, aType);
return;
case "and":
- case "or":
+ case "or":
case "xor":
- case "implies":
case "remainder":
case "leftShift":
case "rightShift":
diff --git a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
index ec2042012a..8c0d8e2688 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
@@ -26,6 +26,7 @@ import groovy.lang.MetaClass;
import groovy.lang.MetaClassRegistry;
import groovy.lang.MetaMethod;
import groovy.transform.Internal;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.runtime.indy.IndyInvalidation;
import org.apache.groovy.runtime.indy.SwitchPointInvalidator;
import org.apache.groovy.util.concurrent.ManagedIdentityConcurrentMap;
@@ -346,6 +347,7 @@ public class ClassInfo implements Finalizable {
* @param cls the class to get information for
* @return the class information, or {@code null} if {@code cls} is {@code null}
*/
+ @GroovyABI(since = "1.6.0")
public static ClassInfo getClassInfo (Class cls) {
return globalClassValue.get(cls);
}
@@ -583,6 +585,7 @@ public class ClassInfo implements Finalizable {
*
* @return a {@code MetaClass} instance
*/
+ @GroovyABI(since = "1.6.0")
public final MetaClass getMetaClass() {
MetaClass answer = getMetaClassForClass();
if (answer != null) return answer;
diff --git a/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java b/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
index feaced7383..d31bd14d2b 100644
--- a/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.runtime;
import groovy.lang.Closure;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.io.ObjectStreamException;
import java.io.Serial;
@@ -103,6 +104,7 @@ public final class CurriedClosure<V> extends Closure<V> {
}
}
+ @GroovyABI(since = "1.0")
public CurriedClosure(final Closure<V> uncurriedClosure, final Object... arguments) {
this(0, uncurriedClosure, arguments);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index e4e24804b3..e592bf4883 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -57,6 +57,7 @@ import groovy.util.OrderBy;
import groovy.util.PermutationGenerator;
import groovy.util.ProxyGenerator;
import org.apache.groovy.io.StringBuilderWriter;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.lang.annotation.Incubating;
import org.apache.groovy.util.ReversedList;
import org.apache.groovy.util.SystemUtil;
@@ -1003,6 +1004,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.Map)
* @since 1.0
*/
+ @GroovyABI(since="3.0.0")
public static <K,V> Map<K,V> asImmutable(Map<K,V> self) {
return asUnmodifiable(new LinkedHashMap<>(self));
}
@@ -1016,6 +1018,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.SortedMap)
* @since 1.0
*/
+ @GroovyABI(since="3.0.0")
public static <K,V> SortedMap<K,V> asImmutable(SortedMap<K,V> self) {
return asUnmodifiable(new TreeMap<>(self));
}
@@ -1041,6 +1044,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.List)
* @since 1.0
*/
+ @GroovyABI(since="3.0.0")
public static <T> List<T> asImmutable(List<T> self) {
return asUnmodifiable(new ArrayList<>(self));
}
@@ -1054,6 +1058,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.Set)
* @since 1.0
*/
+ @GroovyABI(since="3.0.0")
public static <T> Set<T> asImmutable(Set<T> self) {
return asUnmodifiable(new LinkedHashSet<>(self));
}
@@ -1067,6 +1072,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.SortedSet)
* @since 1.0
*/
+ @GroovyABI(since="3.0.0")
public static <T> SortedSet<T> asImmutable(SortedSet<T> self) {
return asUnmodifiable(new TreeSet<>(self));
}
@@ -1080,6 +1086,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see #asUnmodifiable(java.util.Collection)
* @since 1.5.0
*/
+ @GroovyABI(since="3.0.0")
public static <T> Collection<T> asImmutable(Collection<T> self) {
return asUnmodifiable((Collection<T>) new ArrayList<>(self));
}
@@ -11645,6 +11652,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @see org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation#asCollection(java.lang.Object)
* @since 1.0
*/
+ @GroovyABI(since="2.0.0")
public static Iterator iterator(final Object self) {
if (self instanceof Iterator) return (Iterator) self;
return DefaultTypeTransformation.asCollection(self).iterator();
@@ -13818,6 +13826,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @return a Number to the power of a certain exponent
* @since 1.0
*/
+ @GroovyABI(since="2.0.0")
public static Number power(Number self, Number exponent) {
double base, exp, answer;
base = self.doubleValue();
@@ -13842,6 +13851,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @param exponent an Integer exponent
* @return a Number to the power of the exponent
*/
+ @GroovyABI(since="2.0.0")
public static Number power(BigDecimal self, Integer exponent) {
if (exponent >= 0) {
return self.pow(exponent);
@@ -13859,6 +13869,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @param exponent an Integer exponent
* @return a Number to the power of the exponent
*/
+ @GroovyABI(since="2.0.0")
public static Number power(BigInteger self, Integer exponent) {
if (exponent >= 0) {
return self.pow(exponent);
@@ -13877,6 +13888,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @param exponent an Integer exponent
* @return a Number to the power of the exponent
*/
+ @GroovyABI(since="2.0.0")
public static Number power(Integer self, Integer exponent) {
if (exponent >= 0) {
BigInteger answer = BigInteger.valueOf(self).pow(exponent);
@@ -13900,6 +13912,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @param exponent an Integer exponent
* @return a Number to the power of the exponent
*/
+ @GroovyABI(since="2.0.0")
public static Number power(Long self, Integer exponent) {
if (exponent >= 0) {
BigInteger answer = BigInteger.valueOf(self).pow(exponent);
@@ -13921,6 +13934,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @return a BigInteger to the power of the exponent
* @since 2.3.8
*/
+ @GroovyABI(since="2.0.0")
public static BigInteger power(BigInteger self, BigInteger exponent) {
if ((exponent.signum() >= 0) && (exponent.compareTo(BI_INT_MAX) <= 0)) {
return self.pow(exponent.intValue());
diff --git a/src/main/java/org/codehaus/groovy/runtime/FormatHelper.java b/src/main/java/org/codehaus/groovy/runtime/FormatHelper.java
index 866293d70a..be1bf3a7f3 100644
--- a/src/main/java/org/codehaus/groovy/runtime/FormatHelper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/FormatHelper.java
@@ -27,6 +27,7 @@ import groovy.lang.Writable;
import groovy.transform.NamedParam;
import groovy.transform.NamedParams;
import org.apache.groovy.io.StringBuilderWriter;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.control.ResolveVisitor;
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
@@ -45,6 +46,7 @@ import static java.util.Arrays.stream;
/**
* Formatting methods
+ * @since Groovy 4.0.0
*/
public class FormatHelper {
@@ -96,6 +98,7 @@ public class FormatHelper {
* @param arguments the object to convert to a string
* @return a string representation
*/
+ @GroovyABI(since="5.0.0")
public static String toString(Object arguments) {
return format(arguments, false, -1, false);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java b/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
index 4885ce650e..9012c48852 100644
--- a/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
+++ b/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
@@ -22,6 +22,7 @@ import groovy.lang.GString;
import groovy.lang.GroovyObject;
import groovy.transform.Pure;
import org.apache.groovy.ast.tools.ImmutablePropertyUtils;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.io.IOException;
import java.io.Serial;
@@ -59,6 +60,7 @@ public class GStringImpl extends GString {
* @param values the value parts
* @param strings the string parts
*/
+ @GroovyABI(since = "1.0")
public GStringImpl(Object[] values, String[] strings) {
this(values, strings, checkValuesStringConstant(values), null, false);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java b/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
index 9b06e98d6f..4d97d4cb89 100644
--- a/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/InvokerHelper.java
@@ -34,6 +34,7 @@ import groovy.lang.SpreadMap;
import groovy.lang.SpreadMapEvaluatingException;
import groovy.lang.Tuple;
import groovy.util.regex.RegexGuard;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.reflection.ClassInfo;
import org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl;
import org.codehaus.groovy.runtime.metaclass.MissingMethodExecutionFailed;
@@ -154,6 +155,7 @@ public class InvokerHelper {
}
}
+ @GroovyABI(since="2.5.0")
public static Object getProperty(Object object, String property) {
if (object == null) {
object = NullObject.getNullObject();
@@ -168,6 +170,7 @@ public class InvokerHelper {
}
}
+ @GroovyABI(since="2.5.0")
public static Object getPropertySafe(Object object, String property) {
if (object != null) {
return getProperty(object, property);
@@ -175,6 +178,7 @@ public class InvokerHelper {
return null;
}
+ @GroovyABI(since="?")
public static void setProperty(Object object, String property, Object newValue) {
if (object == null) {
object = NullObject.getNullObject();
@@ -193,6 +197,7 @@ public class InvokerHelper {
* This is so we don't have to reorder the stack when we call this method.
* At some point a better name might be in order.
*/
+ @GroovyABI(since="?")
public static void setProperty2(Object newValue, Object object, String property) {
setProperty(object, property, newValue);
}
@@ -201,10 +206,12 @@ public class InvokerHelper {
* This is so we don't have to reorder the stack when we call this method.
* At some point a better name might be in order.
*/
+ @GroovyABI(since="?")
public static void setGroovyObjectProperty(Object newValue, GroovyObject object, String property) {
object.setProperty(property, newValue);
}
+ @GroovyABI(since="?")
public static Object getGroovyObjectProperty(GroovyObject object, String property) {
return object.getProperty(property);
}
@@ -213,6 +220,7 @@ public class InvokerHelper {
* This is so we don't have to reorder the stack when we call this method.
* At some point a better name might be in order.
*/
+ @GroovyABI(since="?")
public static void setPropertySafe2(Object newValue, Object object, String property) {
if (object != null) {
setProperty2(newValue, object, property);
@@ -584,6 +592,7 @@ public class InvokerHelper {
/**
* Invokes the given method on the object.
*/
+ @GroovyABI(since="5.0.0")
public static Object invokeMethod(Object object, String methodName, Object arguments) {
if (object == null) {
object = NullObject.getNullObject();
@@ -686,6 +695,7 @@ public class InvokerHelper {
}
@Deprecated
+ @GroovyABI(since="1.0")
public static String toString(Object arguments) {
return FormatHelper.toString(arguments);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/MultipleAssignmentSupport.java b/src/main/java/org/codehaus/groovy/runtime/MultipleAssignmentSupport.java
index 590dac543c..4b564b30ef 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MultipleAssignmentSupport.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MultipleAssignmentSupport.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.runtime;
import groovy.lang.IntRange;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.lang.reflect.Array;
import java.util.ArrayList;
@@ -80,6 +81,7 @@ public final class MultipleAssignmentSupport {
* @param fromIndex the declarator position of the rest binding
* @param seq the iterator that has already yielded the preceding fixed-slot values
*/
+ @GroovyABI(since="6.0.0")
public static Object tailRest(final Object rhs, final int fromIndex, final Iterator<?> seq) {
if (rhs instanceof List) {
if (fromIndex >= ((List<?>) rhs).size()) return createSimilarList((List<?>) rhs, 0);
@@ -144,6 +146,7 @@ public final class MultipleAssignmentSupport {
* @param fromIndex positive index where the slice begins
* @param toIndex negative index where the slice ends (inclusive)
*/
+ @GroovyABI(since="6.0.0")
public static Object nonTailRestSlice(final Object rhs, final int fromIndex, final int toIndex) {
int size = -1;
if (rhs instanceof List) size = ((List<?>) rhs).size();
diff --git a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
index 9715301e3c..805e80d95f 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
@@ -30,6 +30,7 @@ import groovy.lang.MissingPropertyException;
import groovy.lang.NumberRange;
import groovy.lang.ObjectRange;
import groovy.lang.Tuple;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack;
import org.codehaus.groovy.runtime.metaclass.MissingMethodExecutionFailed;
import org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack;
@@ -52,6 +53,7 @@ import java.util.stream.BaseStream;
/**
* A static helper class to interface bytecode and runtime
*/
+@GroovyABI(since="1.0.0")
public class ScriptBytecodeAdapter {
/**
@@ -747,6 +749,7 @@ public class ScriptBytecodeAdapter {
return (T) n;
}
+ @GroovyABI(since = "1.0")
public static MetaClass initMetaClass(final Object object) {
return InvokerHelper.getMetaClass(object.getClass());
}
@@ -1039,6 +1042,7 @@ public class ScriptBytecodeAdapter {
*
* @since 6.0.0
*/
+ @GroovyABI(since="6.0.0")
public static Object compoundAssign(final Object receiver, final Object arg,
final String assignName, final String baseName) throws Throwable {
if (receiver != null) {
@@ -1071,6 +1075,7 @@ public class ScriptBytecodeAdapter {
*
* @since 6.0.0
*/
+ @GroovyABI(since="6.0.0")
public static Closure<?> packedClosure(final Object owner, final Object dispatchers, final int id,
final String method, final Object[] captured, final Class[] paramTypes,
final boolean strict, final boolean implicit, final boolean vararg) {
diff --git a/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
index bc424d871e..29b7e716f5 100644
--- a/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
@@ -29,6 +29,7 @@ import groovy.transform.stc.PickFirstResolver;
import groovy.util.regex.BalancedGroup;
import groovy.util.regex.RegexGuard;
import org.apache.groovy.io.StringBuilderWriter;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.lang.annotation.Incubating;
import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
import org.codehaus.groovy.util.CharSequenceReader;
@@ -2448,6 +2449,7 @@ public class StringGroovyMethods extends DefaultGroovyMethodsSupport {
*
* @since 1.8.2
*/
+ @GroovyABI(since="3.0.0")
public static String plus(final CharSequence left, final Object right) {
return left + DefaultGroovyMethods.toString(right);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
index 5a76e244d3..93bebf1d90 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberDiv.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.runtime.dgmimpl;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.typehandling.NumberMath;
public final class NumberNumberDiv extends NumberNumberMetaMethod {
@@ -41,6 +42,7 @@ public final class NumberNumberDiv extends NumberNumberMetaMethod {
* @param right another Number
* @return a Number resulting of the divide operation
*/
+ @GroovyABI(since="2.0")
public static Number div(Number left, Number right) {
return NumberMath.divide(left, right);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
index b0301b0335..d39f0593b7 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMinus.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.runtime.dgmimpl;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.typehandling.NumberMath;
public final class NumberNumberMinus extends NumberNumberMetaMethod {
@@ -38,6 +39,7 @@ public final class NumberNumberMinus extends NumberNumberMetaMethod {
* @param right another Number to subtract to the first one
* @return the subtraction
*/
+ @GroovyABI(since="2.0")
public static Number minus(Number left, Number right) {
return NumberMath.subtract(left, right);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
index a040743db0..73f0b7b421 100644
--- a/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
+++ b/src/main/java/org/codehaus/groovy/runtime/dgmimpl/NumberNumberMultiply.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.runtime.dgmimpl;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.typehandling.NumberMath;
public final class NumberNumberMultiply extends NumberNumberMetaMethod {
@@ -31,6 +32,7 @@ public final class NumberNumberMultiply extends NumberNumberMetaMethod {
return NumberMath.multiply((Number) object, (Number) arguments[0]);
}
+ @GroovyABI(since="2.0")
public static Number multiply(Number left, Number right) {
return NumberMath.multiply(left, right);
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java b/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
index 759e747f5d..cb8b6fb507 100644
--- a/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
+++ b/src/main/java/org/codehaus/groovy/runtime/powerassert/AssertionRenderer.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.runtime.powerassert;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.runtime.FormatHelper;
import java.util.ArrayList;
@@ -53,6 +54,7 @@ public final class AssertionRenderer {
return new AssertionRenderer(text, recorder).render();
}
+ @GroovyABI(since="1.7.0")
private String render() {
renderText();
sortValues();
diff --git a/src/main/java/org/codehaus/groovy/runtime/powerassert/ValueRecorder.java b/src/main/java/org/codehaus/groovy/runtime/powerassert/ValueRecorder.java
index 8e4194f50e..efa61ceec7 100644
--- a/src/main/java/org/codehaus/groovy/runtime/powerassert/ValueRecorder.java
+++ b/src/main/java/org/codehaus/groovy/runtime/powerassert/ValueRecorder.java
@@ -18,6 +18,8 @@
*/
package org.codehaus.groovy.runtime.powerassert;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.util.ArrayList;
import java.util.List;
@@ -31,6 +33,7 @@ public class ValueRecorder {
/**
* Removes all values recorded for the current assertion evaluation.
*/
+ @GroovyABI(since="1.7.0")
public void clear() {
values.clear();
}
@@ -43,6 +46,7 @@ public class ValueRecorder {
* non-positive value if the position is unknown
* @return {@code value}
*/
+ @GroovyABI(since="1.7.0")
public Object record(Object value, int anchor) {
values.add(new Value(value, anchor));
return value;
diff --git a/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java b/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java
index 10d589b37c..ce601f51e4 100644
--- a/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java
+++ b/src/main/java/org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.runtime.typehandling;
import groovy.lang.Closure;
import groovy.lang.GString;
import groovy.lang.GroovyRuntimeException;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.classgen.asm.util.TypeUtil;
import org.codehaus.groovy.reflection.stdclasses.CachedSAMClass;
import org.codehaus.groovy.runtime.ArrayGroovyMethods;
@@ -63,6 +64,7 @@ import java.util.stream.LongStream;
/**
* Class providing various type conversions, coercions and boxing/unboxing operations.
+ * @since Groovy 1.8.0
*/
public class DefaultTypeTransformation {
@@ -95,6 +97,7 @@ public class DefaultTypeTransformation {
* @return the byte value
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static byte byteUnbox(final Object value) {
if (value instanceof Byte b) {
return b;
@@ -113,6 +116,7 @@ public class DefaultTypeTransformation {
* @return the char value, or null character if value is null
* @throws GroovyCastException if the object cannot be converted to char
*/
+ @GroovyABI(since = "1.8.0")
public static char charUnbox(final Object value) {
if (value instanceof Character c) {
return c;
@@ -130,6 +134,7 @@ public class DefaultTypeTransformation {
* @return the short value
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static short shortUnbox(final Object value) {
if (value instanceof Short s) {
return s;
@@ -147,6 +152,7 @@ public class DefaultTypeTransformation {
* @return the int value
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static int intUnbox(final Object value) {
if (value instanceof Integer i) {
return i;
@@ -163,6 +169,7 @@ public class DefaultTypeTransformation {
* @param value the object to unbox (may be null for false, Boolean, or any object with asBoolean())
* @return the boolean value
*/
+ @GroovyABI(since = "1.8.0")
public static boolean booleanUnbox(final Object value) {
if (value instanceof Boolean b) {
return b;
@@ -179,6 +186,7 @@ public class DefaultTypeTransformation {
* @return the long value
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static long longUnbox(final Object value) {
if (value instanceof Long l) {
return l;
@@ -197,6 +205,7 @@ public class DefaultTypeTransformation {
* @return the float value, or NaN if value is null
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static float floatUnbox(final Object value) {
if (value instanceof Float f) {
return f;
@@ -216,6 +225,7 @@ public class DefaultTypeTransformation {
* @return the double value, or NaN if value is null
* @throws GroovyCastException if the object cannot be converted to a number
*/
+ @GroovyABI(since = "1.8.0")
public static double doubleUnbox(final Object value) {
if (value instanceof Double d) {
return d;
@@ -237,6 +247,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(boolean value) {
return value ? Boolean.TRUE : Boolean.FALSE;
}
@@ -249,6 +260,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(byte value) {
return value;
}
@@ -261,6 +273,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(char value) {
return value;
}
@@ -273,6 +286,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(short value) {
return value;
}
@@ -285,6 +299,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(int value) {
return value;
}
@@ -297,6 +312,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(long value) {
return value;
}
@@ -309,6 +325,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(float value) {
return value;
}
@@ -321,6 +338,7 @@ public class DefaultTypeTransformation {
* @deprecated since 2.3.0 - Java's auto-boxing is sufficient for this operation
*/
@Deprecated(since = "2.3.0")
+ @GroovyABI(since = "1.8.0")
public static Object box(double value) {
return value;
}
diff --git a/src/main/java/org/codehaus/groovy/runtime/typehandling/NumberMath.java b/src/main/java/org/codehaus/groovy/runtime/typehandling/NumberMath.java
index 9fe7cf532c..15dd093c83 100644
--- a/src/main/java/org/codehaus/groovy/runtime/typehandling/NumberMath.java
+++ b/src/main/java/org/codehaus/groovy/runtime/typehandling/NumberMath.java
@@ -18,6 +18,8 @@
*/
package org.codehaus.groovy.runtime.typehandling;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -121,6 +123,7 @@ public abstract class NumberMath {
* @return the bitwise OR result
* @throws UnsupportedOperationException if operands are not integral types
*/
+ @GroovyABI(since="2.5.0")
public static Number or(Number left, Number right) {
return getMath(left, right).orImpl(left, right);
}
@@ -133,6 +136,7 @@ public abstract class NumberMath {
* @return the bitwise AND result
* @throws UnsupportedOperationException if operands are not integral types
*/
+ @GroovyABI(since="2.5.0")
public static Number and(Number left, Number right) {
return getMath(left, right).andImpl(left, right);
}
@@ -145,6 +149,7 @@ public abstract class NumberMath {
* @return the bitwise XOR result
* @throws UnsupportedOperationException if operands are not integral types
*/
+ @GroovyABI(since="2.5.0")
public static Number xor(Number left, Number right) {
return getMath(left, right).xorImpl(left, right);
}
@@ -173,6 +178,7 @@ public abstract class NumberMath {
* @param right the divisor
* @return the modulo result
*/
+ @GroovyABI(since = "2.0")
public static Number mod(Number left, Number right) {
return getMath(left, right).modImpl(left, right);
}
@@ -187,6 +193,7 @@ public abstract class NumberMath {
* @return the remainder
* @throws UnsupportedOperationException if operands don't support remainder operation
*/
+ @GroovyABI(since="2.5.0")
public static Number remainder(Number left, Number right) {
return getMath(left, right).remainderImpl(left, right);
}
@@ -202,6 +209,7 @@ public abstract class NumberMath {
* @return the left-shifted value
* @throws UnsupportedOperationException if shift distance is floating-point or BigDecimal
*/
+ @GroovyABI(since="2.5.0")
public static Number leftShift(Number left, Number right) {
if (isFloatingPoint(right) || isBigDecimal(right)) {
throw new UnsupportedOperationException("Shift distance must be an integral type, but " + right + " (" + right.getClass().getName() + ") was supplied");
@@ -220,6 +228,7 @@ public abstract class NumberMath {
* @return the right-shifted value
* @throws UnsupportedOperationException if shift distance is floating-point or BigDecimal
*/
+ @GroovyABI(since="2.5.0")
public static Number rightShift(Number left, Number right) {
if (isFloatingPoint(right) || isBigDecimal(right)) {
throw new UnsupportedOperationException("Shift distance must be an integral type, but " + right + " (" + right.getClass().getName() + ") was supplied");
@@ -238,6 +247,7 @@ public abstract class NumberMath {
* @return the unsigned right-shifted value
* @throws UnsupportedOperationException if shift distance is floating-point or BigDecimal
*/
+ @GroovyABI(since="2.5.0")
public static Number rightShiftUnsigned(Number left, Number right) {
if (isFloatingPoint(right) || isBigDecimal(right)) {
throw new UnsupportedOperationException("Shift distance must be an integral type, but " + right + " (" + right.getClass().getName() + ") was supplied");
diff --git a/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
index a74d493ac4..09c6a6971c 100644
--- a/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/ImmutableASTTransformation.java
@@ -27,6 +27,7 @@ import groovy.transform.options.PropertyHandler;
import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.apache.groovy.ast.tools.CopyWithUtils;
import org.apache.groovy.ast.tools.ImmutablePropertyUtils;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotatedNode;
import org.codehaus.groovy.ast.AnnotationNode;
@@ -325,8 +326,10 @@ public class ImmutableASTTransformation extends AbstractASTTransformation implem
}
/**
- * This method exists to be binary compatible with 1.7 - 1.8.6 compiled code.
+ * This method exists to be binary compatible with 1.7 - 1.8.6 compiled code and is since 2.5.0 used
+ * by code produced by ImmutablePropertyHandler
*/
+ @GroovyABI(since="1.7.0")
public static Object checkImmutable(final String className, final String fieldName, final Object field) {
if (field == null || field instanceof Enum || ImmutablePropertyUtils.isBuiltinImmutable(field.getClass().getName())) return field;
if (field instanceof Collection) return DefaultGroovyMethods.asImmutable((Collection<?>) field);
diff --git a/src/main/java/org/codehaus/groovy/util/HashCodeHelper.java b/src/main/java/org/codehaus/groovy/util/HashCodeHelper.java
index a92511beaa..f3b9ce4d85 100644
--- a/src/main/java/org/codehaus/groovy/util/HashCodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/util/HashCodeHelper.java
@@ -18,6 +18,8 @@
*/
package org.codehaus.groovy.util;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.util.Arrays;
/**
@@ -34,6 +36,7 @@ public class HashCodeHelper {
*
* @return the starting hash value
*/
+ @GroovyABI(since="1.6.0")
public static int initHash() {
return SEED;
}
@@ -45,6 +48,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, boolean var) {
return shift(current) + (var ? 79 : 97);
}
@@ -56,6 +60,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, char var) {
return shift(current) + (int) var;
}
@@ -67,6 +72,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Character var) {
return updateHash(current, var == null ? 0 : var.charValue());
}
@@ -78,6 +84,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, int var) {
return shift(current) + var;
}
@@ -89,6 +96,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Integer var) {
return updateHash(current, var == null ? 0 : var);
}
@@ -100,6 +108,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, long var) {
return shift(current) + (int) (var ^ (var >>> 32));
}
@@ -111,6 +120,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Long var) {
return updateHash(current, var == null ? 0L : var);
}
@@ -122,6 +132,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, float var) {
return updateHash(current, Float.floatToIntBits(var));
}
@@ -133,6 +144,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Float var) {
return updateHash(current, var == null ? 0f : var);
}
@@ -144,6 +156,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, double var) {
return updateHash(current, Double.doubleToLongBits(var));
}
@@ -155,6 +168,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Double var) {
return updateHash(current, var == null ? 0d : var);
}
@@ -166,6 +180,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, Object var) {
if (var == null) return updateHash(current, 0);
if (var.getClass().isArray())
@@ -180,6 +195,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, boolean[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -192,6 +208,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, char[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -204,6 +221,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, byte[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -216,6 +234,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, short[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -228,6 +247,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, int[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -240,6 +260,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, long[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -252,6 +273,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, float[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
@@ -264,6 +286,7 @@ public class HashCodeHelper {
* @param var the value to mix in
* @return the updated hash value
*/
+ @GroovyABI(since="1.6.0")
public static int updateHash(int current, double[] var) {
if (var == null) return updateHash(current, 0);
return shift(current) + Arrays.hashCode(var);
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyInterface.java b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyInterface.java
index f902783c01..aeea2138d5 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyInterface.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v7/IndyInterface.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.vmplugin.v7;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.vmplugin.v8.CacheableCallSite;
import java.lang.invoke.CallSite;
@@ -126,6 +127,7 @@ public class IndyInterface {
* @return the produced CallSite
* @since 2.1.0
*/
+ @GroovyABI(since="2.1.0")
public static CallSite bootstrap(Lookup caller, String callType, MethodType type, String name, int flags) {
return org.codehaus.groovy.vmplugin.v8.IndyInterface.bootstrap(caller, callType, type, name, flags);
}
diff --git a/src/main/java/org/codehaus/groovy/vmplugin/v8/IndyInterface.java b/src/main/java/org/codehaus/groovy/vmplugin/v8/IndyInterface.java
index 05cd876150..31f8fdd5c3 100644
--- a/src/main/java/org/codehaus/groovy/vmplugin/v8/IndyInterface.java
+++ b/src/main/java/org/codehaus/groovy/vmplugin/v8/IndyInterface.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.vmplugin.v8;
import groovy.lang.GroovyRuntimeException;
import groovy.lang.GroovySystem;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.apache.groovy.runtime.indy.IndyInvalidation;
import org.apache.groovy.util.SystemUtil;
import org.codehaus.groovy.GroovyBugError;
@@ -293,6 +294,7 @@ public class IndyInterface {
* </ul>
* @since 2.1.0
*/
+ @GroovyABI(since="2.1.0")
public static CallSite bootstrap(final MethodHandles.Lookup caller, final String callType, final MethodType type, final String name, final int flags) {
CallType ct = CallType.fromCallSiteName(callType);
if (null == ct) throw new GroovyBugError("Unknown call type: " + callType);
@@ -631,6 +633,7 @@ public class IndyInterface {
/**
* @since 2.5.0
*/
+ @GroovyABI(since="2.5.0")
public static CallSite staticArrayAccess(MethodHandles.Lookup lookup, String name, MethodType type) {
if (type.parameterCount() == 2) {
return new ConstantCallSite(IndyArrayAccess.arrayGet(type));
@@ -647,6 +650,7 @@ public class IndyInterface {
*
* @since 6.0.0
*/
+ @GroovyABI(since="6.0.0")
public static CallSite packedDispatchers(MethodHandles.Lookup caller, String name, MethodType type) throws Throwable {
return GeneratedDispatcher.bootstrap(caller, name, type);
}
@@ -659,6 +663,7 @@ public class IndyInterface {
*
* @since 6.0.0
*/
+ @GroovyABI(since="6.0.0")
public static Class<?>[] packedParamTypes(MethodHandles.Lookup caller, String name, Class<?> type, String descriptor) {
return GeneratedDispatcher.paramTypes(caller, name, type, descriptor);
}
diff --git a/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSite.java b/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSite.java
index d46b833a1f..b1e0329ae5 100644
--- a/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSite.java
+++ b/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSite.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.runtime.callsite;
import groovy.lang.GroovyObject;
+import org.apache.groovy.lang.annotation.GroovyABI;
/**
* Classic (non-{@code invokedynamic}) call site.
@@ -37,38 +38,68 @@ public interface CallSite {
Object callGroovyObjectGetProperty (Object receiver) throws Throwable;
Object callGroovyObjectGetPropertySafe (Object receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver, Object[] args) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver, Object arg1) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver, Object arg1, Object arg2) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver, Object arg1, Object arg2, Object arg3) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object call (Object receiver, Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver, Object[] args) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver, Object arg1) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver, Object arg1, Object arg2) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver, Object arg1, Object arg2, Object arg3) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callSafe (Object receiver, Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver, Object [] args) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver, Object arg1) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver, Object arg1, Object arg2) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver, Object arg1, Object arg2, Object arg3) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callCurrent (GroovyObject receiver, Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver, Object [] args) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver, Object arg1) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver, Object arg1, Object arg2) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver, Object arg1, Object arg2, Object arg3) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callStatic (Class receiver, Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver, Object [] args) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver, Object arg1) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver, Object arg1, Object arg2) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver, Object arg1, Object arg2, Object arg3) throws Throwable;
+ @GroovyABI(since = "1.6.0")
Object callConstructor (Object receiver, Object arg1, Object arg2, Object arg3, Object arg4) throws Throwable;
}
diff --git a/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java b/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
index b60630fb41..7539d9c860 100644
--- a/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
+++ b/subprojects/groovy-callsite/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteArray.java
@@ -22,6 +22,7 @@ import groovy.lang.GroovyInterceptable;
import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import groovy.lang.MetaClassImpl;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.reflection.ClassInfo;
import org.codehaus.groovy.runtime.GroovyCategorySupport;
import org.codehaus.groovy.runtime.InvokerHelper;
@@ -39,6 +40,7 @@ public final class CallSiteArray {
public final CallSite[] array;
public final Class owner;
+ @GroovyABI(since = "1.6.0")
public CallSiteArray(Class owner, final String[] names) {
this.owner = owner;
this.array = IntStream.range(0, names.length)
diff --git a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ViolationTracker.java b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ViolationTracker.java
index b4d4cb312e..a1c4f5acb4 100644
--- a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ViolationTracker.java
+++ b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/ViolationTracker.java
@@ -19,6 +19,7 @@
package org.apache.groovy.contracts;
import org.apache.groovy.contracts.util.Validate;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.util.NavigableMap;
import java.util.TreeMap;
@@ -40,6 +41,7 @@ public class ViolationTracker {
/**
* Installs a fresh tracker for the current thread.
*/
+ @GroovyABI(since="4.0.0")
public static void init() {
INSTANCE.set(new ViolationTracker());
}
@@ -47,6 +49,7 @@ public class ViolationTracker {
/**
* Removes the tracker associated with the current thread.
*/
+ @GroovyABI(since="4.0.0")
public static void deinit() {
INSTANCE.remove();
}
@@ -56,6 +59,7 @@ public class ViolationTracker {
*
* @return {@code true} if a violation has been tracked for the current thread
*/
+ @GroovyABI(since="4.0.0")
public static boolean violationsOccurred() {
return INSTANCE.get().hasViolations();
}
@@ -63,6 +67,7 @@ public class ViolationTracker {
/**
* Rethrows the earliest recorded violation for the current thread.
*/
+ @GroovyABI(since="4.0.0")
public static void rethrowFirst() {
throw INSTANCE.get().first();
}
@@ -70,6 +75,7 @@ public class ViolationTracker {
/**
* Rethrows the most recently recorded violation for the current thread.
*/
+ @GroovyABI(since="4.0.0")
public static void rethrowLast() {
throw INSTANCE.get().last();
}
@@ -81,6 +87,7 @@ public class ViolationTracker {
*
* @param assertionViolation the violation to store
*/
+ @GroovyABI(since="4.0.0")
public void track(final AssertionViolation assertionViolation) {
Validate.notNull(assertionViolation);
@@ -92,6 +99,7 @@ public class ViolationTracker {
*
* @return {@code true} if at least one violation has been recorded
*/
+ @GroovyABI(since="4.0.0")
public boolean hasViolations() {
return !violations.isEmpty();
}
@@ -101,6 +109,7 @@ public class ViolationTracker {
*
* @return the first violation in encounter order
*/
+ @GroovyABI(since="4.0.0")
public AssertionViolation first() {
return violations.firstEntry().getValue();
}
@@ -110,6 +119,7 @@ public class ViolationTracker {
*
* @return the last violation in encounter order
*/
+ @GroovyABI(since="4.0.0")
public AssertionViolation last() {
return violations.lastEntry().getValue();
}
diff --git a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/Configurator.java b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/Configurator.java
index aef71bfd58..9f2802a8ed 100644
--- a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/Configurator.java
+++ b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/Configurator.java
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.contracts.generation;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.HashMap;
@@ -102,6 +104,7 @@ public final class Configurator {
* @param className the class name to look up in the assertion configuration
* @return whether assertion checking is enabled or not
*/
+ @GroovyABI(since="4.0.0")
public static boolean checkAssertionsEnabled(final String className) {
return internalMethod(className);
}
diff --git a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/ContractExecutionTracker.java b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/ContractExecutionTracker.java
index 9e521d9bc7..546a353017 100644
--- a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/ContractExecutionTracker.java
+++ b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/generation/ContractExecutionTracker.java
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.contracts.generation;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
@@ -156,6 +158,7 @@ public class ContractExecutionTracker {
* @param assertionType the logical contract kind
* @param isStatic whether the executable is static
*/
+ @GroovyABI(since="4.0.0")
public static void clear(String className, String methodIdentifier, String assertionType, boolean isStatic) {
final Set<ContractExecution> contractExecutions = executions.get();
diff --git a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/util/FieldValues.java b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/util/FieldValues.java
index f9b6fd10e5..d22b0c36d7 100644
--- a/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/util/FieldValues.java
+++ b/subprojects/groovy-contracts/src/main/java/org/apache/groovy/contracts/util/FieldValues.java
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.contracts.util;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.lang.reflect.Field;
/**
@@ -37,6 +39,7 @@ public class FieldValues {
* @throws IllegalAccessException if reflective access fails
*/
@SuppressWarnings("unchecked")
+ @GroovyABI(since="4.0.0")
public static <T> T fieldValue(Object obj, String fieldName, Class<T> type) throws IllegalAccessException {
Validate.notNull(obj);
Validate.notNull(fieldName);
@@ -54,6 +57,7 @@ public class FieldValues {
return (T) f.get(target);
}
+ @GroovyABI(since="4.0.0")
private static Field findField(Class<?> clazz, String name) {
Class<?> next = clazz;
while (!Object.class.equals(next) && next != null) {
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/NamedRecord.groovy b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/NamedRecord.groovy
index 3f24b0a641..88eeb8f8e4 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/NamedRecord.groovy
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/NamedRecord.groovy
@@ -21,6 +21,7 @@ package org.apache.groovy.ginq.provider.collection.runtime
import groovy.transform.AutoFinal
import groovy.transform.CompileStatic
import groovy.transform.stc.POJO
+import org.apache.groovy.lang.annotation.GroovyABI
/**
* Represents named record, which is constructed by clauses excluding {@code from} and joins
@@ -99,6 +100,7 @@ class NamedRecord<E, T> extends NamedTuple<E> {
* @param sr the source record
* @return this record
*/
+ @GroovyABI(since="4.0.0")
NamedRecord<E, T> sourceRecord(T sr) {
sourceRecord = new SourceRecord<>(sr, getAliasList())
return this
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/Queryable.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/Queryable.java
index a3b013b56f..9eb9b62f9e 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/Queryable.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/Queryable.java
@@ -20,6 +20,7 @@ package org.apache.groovy.ginq.provider.collection.runtime;
import groovy.lang.Tuple2;
import groovy.transform.Internal;
+import org.apache.groovy.lang.annotation.GroovyABI;
import java.math.BigDecimal;
import java.util.Arrays;
@@ -72,6 +73,7 @@ public interface Queryable<T> {
* @return the {@link Queryable} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> Queryable<T> from(Iterable<T> iterable) {
return new QueryableCollection<>(iterable);
}
@@ -84,6 +86,7 @@ public interface Queryable<T> {
* @return the {@link Queryable} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> Queryable<T> from(T[] array) {
return new QueryableCollection<>(Arrays.asList(array));
}
@@ -96,6 +99,7 @@ public interface Queryable<T> {
* @return the {@link Queryable} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> Queryable<T> from(Stream<T> sourceStream) {
return new QueryableCollection<>(sourceStream);
}
@@ -108,6 +112,7 @@ public interface Queryable<T> {
* @return the {@link Queryable} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> Queryable<T> from(Queryable<T> queryable) {
return queryable;
}
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableHelper.groovy b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableHelper.groovy
index 40febc064b..f4a7cc5e27 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableHelper.groovy
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableHelper.groovy
@@ -21,6 +21,7 @@ package org.apache.groovy.ginq.provider.collection.runtime
import groovy.transform.CompileDynamic
import groovy.transform.CompileStatic
import groovy.transform.Internal
+import org.apache.groovy.lang.annotation.GroovyABI
import org.apache.groovy.util.SystemUtil
import java.util.concurrent.Callable
@@ -54,6 +55,7 @@ class QueryableHelper {
* @return the result {@link Queryable} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> Queryable<SourceRecord<T>> navigate(Queryable<? extends T> queryable, List<String> aliasList) {
List<SourceRecord<T>> sourceRecordList =
queryable.stream()
@@ -71,6 +73,7 @@ class QueryableHelper {
* @throws TooManyValuesException if the {@link Queryable} instance contains more than one value
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T> T singleValue(final Queryable<? extends T> queryable) {
List<? extends T> list = queryable.toList()
int size = list.size()
@@ -91,6 +94,7 @@ class QueryableHelper {
* @param supplier the supplier to execute
* @return the asynchronous result
*/
+ @GroovyABI(since="4.0.0")
static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier) {
return CompletableFuture.supplyAsync(supplier, ThreadPoolHolder.THREAD_POOL)
}
@@ -112,6 +116,7 @@ class QueryableHelper {
* @param callable the task to submit
* @return the submitted task
*/
+ @GroovyABI(since="4.0.0")
static <T> ForkJoinTask<T> submit(Callable<T> callable) {
return ThreadPoolHolder.FORKJOIN_POOL.submit(callable)
}
@@ -131,6 +136,7 @@ class QueryableHelper {
* @param name the variable name
* @param value the variable value
*/
+ @GroovyABI(since="4.0.0")
static <T> void setVar(String name, T value) {
VAR_HOLDER.get().put(name, value)
}
@@ -141,6 +147,7 @@ class QueryableHelper {
* @param name the variable name
* @return the stored value
*/
+ @GroovyABI(since="4.0.0")
static <T> T getVar(String name) {
(T) VAR_HOLDER.get().get(name)
}
@@ -151,6 +158,7 @@ class QueryableHelper {
* @param name the variable name
* @return the removed value
*/
+ @GroovyABI(since="4.0.0")
static <T> T removeVar(String name) {
(T) VAR_HOLDER.get().remove(name)
}
diff --git a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowDefinition.java b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowDefinition.java
index f56cb14c86..ac3223ea6b 100644
--- a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowDefinition.java
+++ b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowDefinition.java
@@ -18,6 +18,8 @@
*/
package org.apache.groovy.ginq.provider.collection.runtime;
+import org.apache.groovy.lang.annotation.GroovyABI;
+
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
@@ -39,6 +41,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of() {
return new WindowDefinitionImpl<>();
}
@@ -52,6 +55,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(Function<? super T, ?> partitionBy) {
return new WindowDefinitionImpl<>(partitionBy);
}
@@ -65,6 +69,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(Queryable.Order<? super T, ? extends U> orderBy) {
return new WindowDefinitionImpl<T, U>(Collections.singletonList(orderBy));
}
@@ -78,6 +83,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(List<Queryable.Order<? super T, ? extends U>> orderBy) {
return new WindowDefinitionImpl<>(orderBy);
}
@@ -92,6 +98,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(Function<? super T, ?> partitionBy, List<Queryable.Order<? super T, ? extends U>> orderBy) {
return new WindowDefinitionImpl<>(partitionBy, orderBy);
}
@@ -107,6 +114,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(Function<? super T, ?> partitionBy, List<Queryable.Order<? super T, ? extends U>> orderBy, RowBound rows) {
return new WindowDefinitionImpl<>(partitionBy, orderBy, rows);
}
@@ -121,6 +129,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(List<Queryable.Order<? super T, ? extends U>> orderBy, RowBound rows) {
return new WindowDefinitionImpl<>(orderBy, rows);
}
@@ -136,6 +145,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(Function<? super T, ?> partitionBy, List<Queryable.Order<? super T, ? extends U>> orderBy, ValueBound<? extends U> range) {
return new WindowDefinitionImpl<>(partitionBy, orderBy, range);
}
@@ -150,6 +160,7 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return the {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
static <T, U extends Comparable<? super U>> WindowDefinition<T, U> of(List<Queryable.Order<? super T, ? extends U>> orderBy, ValueBound<? extends U> range) {
return new WindowDefinitionImpl<>(orderBy, range);
}
@@ -208,5 +219,6 @@ public interface WindowDefinition<T, U extends Comparable<? super U>> {
* @return self, i.e. current {@link WindowDefinition} instance
* @since 4.0.0
*/
+ @GroovyABI(since="4.0.0")
WindowDefinition<T, U> setId(Object id);
}
diff --git a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/runtime/MacroBuilder.java b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/runtime/MacroBuilder.java
index 4a329ed74f..88ba70db1a 100644
--- a/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/runtime/MacroBuilder.java
+++ b/subprojects/groovy-macro/src/main/groovy/org/codehaus/groovy/macro/runtime/MacroBuilder.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.macro.runtime;
import groovy.lang.Closure;
+import org.apache.groovy.lang.annotation.GroovyABI;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.ClassCodeExpressionTransformer;
import org.codehaus.groovy.ast.ClassNode;
@@ -55,6 +56,7 @@ public enum MacroBuilder {
* @param <T> the expected result type
* @return the built macro value
*/
+ @GroovyABI(since="2.5.0")
public <T> T macro(String source, final List<Closure<Expression>> context, Class<T> resultClass) {
return macro(false, source, context, resultClass);
}
@@ -69,6 +71,7 @@ public enum MacroBuilder {
* @param <T> the expected result type
* @return the built macro value
*/
+ @GroovyABI(since="2.5.0")
public <T> T macro(boolean asIs, String source, final List<Closure<Expression>> context, Class<T> resultClass) {
return macro(null, asIs, source, context, resultClass);
}
@@ -83,6 +86,7 @@ public enum MacroBuilder {
* @param <T> the expected result type
* @return the built macro value
*/
+ @GroovyABI(since="2.5.0")
public <T> T macro(CompilePhase compilePhase, String source, final List<Closure<Expression>> context, Class<T> resultClass) {
return macro(compilePhase, false, source, context, resultClass);
}