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

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/master by this push:
     new 75cb7085f7 refactor: add @Serial to serialVersionUID
75cb7085f7 is described below

commit 75cb7085f75830de060ee96eafcde1af0c31d6e3
Author: Paul King <[email protected]>
AuthorDate: Tue Mar 31 08:57:30 2026 +1000

    refactor: add @Serial to serialVersionUID
---
 src/main/java/groovy/cli/TypedOption.java                     |  3 ++-
 src/main/java/groovy/lang/Closure.java                        |  7 ++++---
 src/main/java/groovy/lang/ClosureException.java               |  4 +++-
 src/main/java/groovy/lang/DeprecationException.java           |  4 +++-
 src/main/java/groovy/lang/GString.java                        |  9 +++------
 src/main/java/groovy/lang/GroovyRuntimeException.java         |  4 +++-
 src/main/java/groovy/lang/IllegalPropertyAccessException.java |  5 +++--
 .../java/groovy/lang/IncorrectClosureArgumentsException.java  |  4 +++-
 src/main/java/groovy/lang/IntRange.java                       |  3 ++-
 src/main/java/groovy/lang/MetaClassRegistryChangeEvent.java   |  3 ++-
 src/main/java/groovy/lang/MissingClassException.java          |  8 +++++---
 src/main/java/groovy/lang/MissingFieldException.java          |  8 +++++---
 src/main/java/groovy/lang/MissingMethodException.java         |  4 +++-
 src/main/java/groovy/lang/MissingPropertyException.java       |  4 +++-
 src/main/java/groovy/lang/NamedValue.java                     |  3 ++-
 src/main/java/groovy/lang/NonEmptySequence.java               |  3 ++-
 src/main/java/groovy/lang/NumberRange.java                    |  3 ++-
 src/main/java/groovy/lang/ReadOnlyPropertyException.java      |  4 +++-
 src/main/java/groovy/lang/Reference.java                      |  3 ++-
 src/main/java/groovy/lang/Sequence.java                       |  3 ++-
 src/main/java/groovy/lang/SpreadListEvaluatingException.java  |  4 +++-
 src/main/java/groovy/lang/SpreadMap.java                      |  3 ++-
 src/main/java/groovy/lang/SpreadMapEvaluatingException.java   |  4 +++-
 src/main/java/groovy/lang/StringWriterIOException.java        |  3 ++-
 src/main/java/groovy/lang/TrampolineClosure.java              |  4 +++-
 src/main/java/groovy/lang/Tuple.java                          |  3 ++-
 src/main/java/groovy/lang/Tuple0.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple1.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple10.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple11.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple12.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple13.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple14.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple15.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple16.java                        |  4 +++-
 src/main/java/groovy/lang/Tuple2.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple3.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple4.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple5.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple6.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple7.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple8.java                         |  4 +++-
 src/main/java/groovy/lang/Tuple9.java                         |  4 +++-
 src/main/java/groovy/namespace/QName.java                     |  3 ++-
 src/main/java/groovy/security/GroovyCodeSourcePermission.java |  3 ++-
 .../java/groovy/transform/stc/IncorrectTypeHintException.java |  4 +++-
 src/main/java/groovy/util/ClosureComparator.java              |  3 ++-
 src/main/java/groovy/util/Node.java                           |  3 ++-
 src/main/java/groovy/util/NodeList.java                       |  3 ++-
 src/main/java/groovy/util/OrderBy.java                        |  3 ++-
 src/main/java/groovy/util/ResourceException.java              |  4 +++-
 src/main/java/groovy/util/ScriptException.java                |  4 +++-
 src/main/java/org/apache/groovy/antlr/LexerFrame.java         | 11 ++++-------
 src/main/java/org/apache/groovy/io/StringBuilderWriter.java   |  3 ++-
 .../org/apache/groovy/util/JavaShellCompilationException.java |  4 +++-
 src/main/java/org/apache/groovy/util/ReversedList.java        |  3 ++-
 .../groovy/util/concurrent/ConcurrentReferenceHashMap.java    |  9 +++++----
 .../groovy/util/concurrent/ManagedIdentityConcurrentMap.java  |  3 ++-
 .../concurrentlinkedhashmap/ConcurrentLinkedHashMap.java      | 11 ++++++-----
 src/main/java/org/codehaus/groovy/GroovyBugError.java         |  4 +++-
 src/main/java/org/codehaus/groovy/GroovyException.java        |  4 +++-
 .../org/codehaus/groovy/classgen/ClassGeneratorException.java |  4 +++-
 .../codehaus/groovy/control/CompilationFailedException.java   |  4 +++-
 .../org/codehaus/groovy/control/ConfigurationException.java   |  4 +++-
 src/main/java/org/codehaus/groovy/control/ErrorCollector.java |  3 ++-
 .../groovy/control/MultipleCompilationErrorsException.java    |  3 ++-
 .../groovy/reflection/CacheAccessControlException.java        |  4 +++-
 .../java/org/codehaus/groovy/runtime/ComposedClosure.java     |  3 ++-
 .../java/org/codehaus/groovy/runtime/ConversionHandler.java   |  3 ++-
 .../java/org/codehaus/groovy/runtime/ConvertedClosure.java    |  3 ++-
 src/main/java/org/codehaus/groovy/runtime/ConvertedMap.java   |  3 ++-
 src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java |  4 +++-
 src/main/java/org/codehaus/groovy/runtime/GStringImpl.java    |  3 ++-
 .../codehaus/groovy/runtime/InvokerInvocationException.java   |  3 ++-
 .../org/codehaus/groovy/runtime/IteratorClosureAdapter.java   |  5 +++--
 src/main/java/org/codehaus/groovy/runtime/MethodClosure.java  |  3 ++-
 .../org/codehaus/groovy/runtime/NumberAwareComparator.java    |  3 ++-
 .../java/org/codehaus/groovy/runtime/ScriptReference.java     |  4 +++-
 src/main/java/org/codehaus/groovy/runtime/WritableFile.java   |  7 ++-----
 .../java/org/codehaus/groovy/runtime/memoize/CommonCache.java |  5 +++--
 .../groovy/runtime/memoize/ConcurrentCommonCache.java         |  4 +++-
 .../codehaus/groovy/runtime/memoize/ConcurrentSoftCache.java  |  3 ++-
 .../codehaus/groovy/runtime/memoize/LRUProtectionStorage.java |  3 ++-
 .../codehaus/groovy/runtime/memoize/StampedCommonCache.java   |  4 +++-
 .../groovy/runtime/memoize/UnlimitedConcurrentCache.java      |  4 +++-
 .../groovy/runtime/metaclass/ConcurrentReaderHashMap.java     |  5 +++--
 .../groovy/runtime/metaclass/MethodSelectionException.java    |  3 ++-
 .../runtime/metaclass/MissingMethodExceptionNoStack.java      |  6 ++++--
 .../runtime/metaclass/MissingMethodExecutionFailed.java       |  4 +++-
 .../runtime/metaclass/MissingPropertyExceptionNoStack.java    |  4 +++-
 .../groovy/runtime/powerassert/PowerAssertionError.java       |  4 +++-
 .../runtime/powerassert/SourceTextNotAvailableException.java  |  4 +++-
 .../groovy/runtime/typehandling/GroovyCastException.java      |  3 ++-
 src/main/java/org/codehaus/groovy/syntax/ParserException.java |  4 +++-
 src/main/java/org/codehaus/groovy/syntax/ReadException.java   |  3 ++-
 .../org/codehaus/groovy/syntax/RuntimeParserException.java    |  4 +++-
 src/main/java/org/codehaus/groovy/syntax/SyntaxException.java |  4 +++-
 src/main/java/org/codehaus/groovy/syntax/TokenException.java  |  4 +++-
 .../org/codehaus/groovy/syntax/TokenMismatchException.java    |  4 +++-
 src/main/java/org/codehaus/groovy/tools/gse/StringSetMap.java |  3 ++-
 .../groovy/transform/tailrec/GotoRecurHereException.java      |  4 +++-
 .../java/org/codehaus/groovy/util/CharSequenceReader.java     |  3 ++-
 src/main/java/org/codehaus/groovy/util/FastArray.java         |  3 ++-
 src/main/java/org/codehaus/groovy/util/LazyReference.java     |  6 ++++--
 src/main/java/org/codehaus/groovy/util/LockableObject.java    |  3 ++-
 .../org/codehaus/groovy/ant/AntProjectPropertiesDelegate.java |  3 ++-
 .../src/main/groovy/groovy/console/ui/ConsoleTextEditor.java  |  3 ++-
 .../src/main/groovy/groovy/console/ui/text/TextEditor.java    |  3 ++-
 .../groovy/org/apache/groovy/ginq/dsl/GinqSyntaxError.java    |  4 +++-
 .../ginq/provider/collection/runtime/AbstractBound.java       |  3 ++-
 .../groovy/ginq/provider/collection/runtime/GroupImpl.java    |  3 ++-
 .../ginq/provider/collection/runtime/PartitionImpl.java       |  4 +++-
 .../ginq/provider/collection/runtime/QueryableCollection.java |  5 +++--
 .../groovy/ginq/provider/collection/runtime/RowBound.java     |  4 +++-
 .../groovy/ginq/provider/collection/runtime/ValueBound.java   |  4 +++-
 .../groovy/ginq/provider/collection/runtime/WindowImpl.java   |  3 ++-
 .../main/groovy/groovy/text/TemplateExecutionException.java   |  4 +++-
 .../src/main/groovy/groovy/text/TemplateParseException.java   |  4 +++-
 118 files changed, 321 insertions(+), 153 deletions(-)

diff --git a/src/main/java/groovy/cli/TypedOption.java 
b/src/main/java/groovy/cli/TypedOption.java
index 3ac915c35f..0978e84051 100644
--- a/src/main/java/groovy/cli/TypedOption.java
+++ b/src/main/java/groovy/cli/TypedOption.java
@@ -18,10 +18,11 @@
  */
 package groovy.cli;
 
+import java.io.Serial;
 import java.util.HashMap;
 
 public class TypedOption<T> extends HashMap<String, T> {
-    private static final long serialVersionUID = 8931624081859777854L;
+    @Serial private static final long serialVersionUID = 8931624081859777854L;
 
     public T defaultValue() {
         return (T) super.get("defaultValue");
diff --git a/src/main/java/groovy/lang/Closure.java 
b/src/main/java/groovy/lang/Closure.java
index 76dac621e7..0071e95389 100644
--- a/src/main/java/groovy/lang/Closure.java
+++ b/src/main/java/groovy/lang/Closure.java
@@ -35,6 +35,7 @@ import org.codehaus.groovy.runtime.memoize.LRUCache;
 import org.codehaus.groovy.runtime.memoize.Memoize;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.io.Serializable;
 import java.io.Writer;
 import java.util.Map;
@@ -200,7 +201,7 @@ public abstract class Closure<V> extends 
GroovyObjectSupport implements Cloneabl
     public static final int DONE = 1, SKIP = 2;
     private static final Object[] EMPTY_OBJECT_ARRAY = {};
     public static final Closure IDENTITY = new Closure<Object>(null) {
-        private static final long serialVersionUID = 730973623329943963L;
+        @Serial private static final long serialVersionUID = 
730973623329943963L;
 
         public Object doCall(Object args) {
             return args;
@@ -232,7 +233,7 @@ public abstract class Closure<V> extends 
GroovyObjectSupport implements Cloneabl
     private int directive;
     protected Class<?>[] parameterTypes;
     protected int maximumNumberOfParameters;
-    private static final long serialVersionUID = 4368710879820278874L;
+    @Serial private static final long serialVersionUID = 4368710879820278874L;
     private BooleanClosureWrapper bcw;
 
     public Closure(Object owner, Object thisObject) {
@@ -950,7 +951,7 @@ public abstract class Closure<V> extends 
GroovyObjectSupport implements Cloneabl
      * inner class instead of the outer!
      */
     private class WritableClosure extends Closure implements Writable {
-        private static final long serialVersionUID = -5749205698681690370L;
+        @Serial private static final long serialVersionUID = 
-5749205698681690370L;
 
         private WritableClosure() {
             super(Closure.this);
diff --git a/src/main/java/groovy/lang/ClosureException.java 
b/src/main/java/groovy/lang/ClosureException.java
index 4d48deb76d..9c3b5c2823 100644
--- a/src/main/java/groovy/lang/ClosureException.java
+++ b/src/main/java/groovy/lang/ClosureException.java
@@ -18,12 +18,14 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * An exception thrown by a closure invocation
  */
 public class ClosureException extends RuntimeException {
 
-    private static final long serialVersionUID = -945565055750688719L;
+    @Serial private static final long serialVersionUID = -945565055750688719L;
     private final Closure closure;
 
     public ClosureException(Closure closure, Throwable cause) {
diff --git a/src/main/java/groovy/lang/DeprecationException.java 
b/src/main/java/groovy/lang/DeprecationException.java
index e66dc4a4ad..b61c366909 100644
--- a/src/main/java/groovy/lang/DeprecationException.java
+++ b/src/main/java/groovy/lang/DeprecationException.java
@@ -18,6 +18,8 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Use this exception to mark a method implementation as being deprecated.
  *
@@ -31,7 +33,7 @@ package groovy.lang;
  */
 public class DeprecationException extends RuntimeException {
 
-    private static final long serialVersionUID = 8828016729085737697L;
+    @Serial private static final long serialVersionUID = 8828016729085737697L;
 
     public DeprecationException(String message) {
         super(message);
diff --git a/src/main/java/groovy/lang/GString.java 
b/src/main/java/groovy/lang/GString.java
index 3b6b4d0792..35b86e2e25 100644
--- a/src/main/java/groovy/lang/GString.java
+++ b/src/main/java/groovy/lang/GString.java
@@ -24,10 +24,7 @@ import org.codehaus.groovy.runtime.GStringUtil;
 import org.codehaus.groovy.runtime.InvokerHelper;
 import org.codehaus.groovy.runtime.StringGroovyMethods;
 
-import java.io.IOException;
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
-import java.io.Writer;
+import java.io.*;
 import java.util.regex.Pattern;
 
 /**
@@ -42,7 +39,7 @@ import java.util.regex.Pattern;
  */
 public abstract class GString extends GroovyObjectSupport implements 
Comparable, CharSequence, Writable, Buildable, Serializable {
 
-    private static final long serialVersionUID = -2638020355892246323L;
+    @Serial private static final long serialVersionUID = -2638020355892246323L;
 
     public static final String[] EMPTY_STRING_ARRAY = new String[0];
     public static final Object[] EMPTY_OBJECT_ARRAY = new Object[0];
@@ -51,7 +48,7 @@ public abstract class GString extends GroovyObjectSupport 
implements Comparable,
      * A GString containing a single empty String and no values.
      */
     public static final GString EMPTY = new GString(EMPTY_OBJECT_ARRAY) {
-        private static final long serialVersionUID = -7676746462783374250L;
+        @Serial private static final long serialVersionUID = 
-7676746462783374250L;
         private static final String EMPTY_STRING = "";
 
         @Override
diff --git a/src/main/java/groovy/lang/GroovyRuntimeException.java 
b/src/main/java/groovy/lang/GroovyRuntimeException.java
index 421efef6d6..a420671497 100644
--- a/src/main/java/groovy/lang/GroovyRuntimeException.java
+++ b/src/main/java/groovy/lang/GroovyRuntimeException.java
@@ -21,12 +21,14 @@ package groovy.lang;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.ModuleNode;
 
+import java.io.Serial;
+
 /**
  * An exception thrown by the interpreter
  */
 public class GroovyRuntimeException extends RuntimeException {
 
-    private static final long serialVersionUID = -193137033604506378L;
+    @Serial private static final long serialVersionUID = -193137033604506378L;
     private ModuleNode module;
     private ASTNode node;
 
diff --git a/src/main/java/groovy/lang/IllegalPropertyAccessException.java 
b/src/main/java/groovy/lang/IllegalPropertyAccessException.java
index 1702c2c035..e942530a99 100644
--- a/src/main/java/groovy/lang/IllegalPropertyAccessException.java
+++ b/src/main/java/groovy/lang/IllegalPropertyAccessException.java
@@ -18,16 +18,17 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 
 /**
- * An exception occurred if a dynamic property dispatch fails with a 
+ * An exception occurred if a dynamic property dispatch fails with a
  * field not accessible.
  */
 public class IllegalPropertyAccessException extends MissingPropertyException {
 
-    private static final long serialVersionUID = 8149534204771978786L;
+    @Serial private static final long serialVersionUID = 8149534204771978786L;
 
     private static String makeMessage(String propertyName, Class clazz, int 
modifiers, boolean isField) {
         String access = "private";
diff --git a/src/main/java/groovy/lang/IncorrectClosureArgumentsException.java 
b/src/main/java/groovy/lang/IncorrectClosureArgumentsException.java
index 987700092b..ad09235ecb 100644
--- a/src/main/java/groovy/lang/IncorrectClosureArgumentsException.java
+++ b/src/main/java/groovy/lang/IncorrectClosureArgumentsException.java
@@ -20,13 +20,15 @@ package groovy.lang;
 
 import org.codehaus.groovy.runtime.FormatHelper;
 
+import java.io.Serial;
+
 /**
  * An exception occurred when invoking a Closure with the wrong number and/or
  * types of arguments
  */
 public class IncorrectClosureArgumentsException extends GroovyRuntimeException 
{
 
-    private static final long serialVersionUID = 4208144749858078754L;
+    @Serial private static final long serialVersionUID = 4208144749858078754L;
     private final Closure closure;
     private final Object arguments;
     private final Class[] expected;
diff --git a/src/main/java/groovy/lang/IntRange.java 
b/src/main/java/groovy/lang/IntRange.java
index ada98bac0d..b26ee32c04 100644
--- a/src/main/java/groovy/lang/IntRange.java
+++ b/src/main/java/groovy/lang/IntRange.java
@@ -21,6 +21,7 @@ package groovy.lang;
 import org.codehaus.groovy.runtime.IteratorClosureAdapter;
 import org.codehaus.groovy.runtime.RangeInfo;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigInteger;
 import java.util.AbstractList;
@@ -55,7 +56,7 @@ import java.util.Objects;
  */
 public class IntRange extends AbstractList<Integer> implements Range<Integer>, 
Serializable {
 
-    private static final long serialVersionUID = -7827097587793510780L;
+    @Serial private static final long serialVersionUID = -7827097587793510780L;
 
     /**
      * Iterates through each number in an <code>IntRange</code>.
diff --git a/src/main/java/groovy/lang/MetaClassRegistryChangeEvent.java 
b/src/main/java/groovy/lang/MetaClassRegistryChangeEvent.java
index 8049a47b75..c929e05cb1 100644
--- a/src/main/java/groovy/lang/MetaClassRegistryChangeEvent.java
+++ b/src/main/java/groovy/lang/MetaClassRegistryChangeEvent.java
@@ -18,13 +18,14 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
 import java.util.EventObject;
 
 /**
  * An event used to propagate metaclass updates
  */
 public class MetaClassRegistryChangeEvent extends EventObject {
-    private static final long serialVersionUID = 1647849176793457976L;
+    @Serial private static final long serialVersionUID = 1647849176793457976L;
     private final Class clazz;
     private final Object instance;
     private final MetaClass metaClass;
diff --git a/src/main/java/groovy/lang/MissingClassException.java 
b/src/main/java/groovy/lang/MissingClassException.java
index 0306b685fb..1ee14c13c0 100644
--- a/src/main/java/groovy/lang/MissingClassException.java
+++ b/src/main/java/groovy/lang/MissingClassException.java
@@ -21,15 +21,17 @@ package groovy.lang;
 import org.codehaus.groovy.ast.ASTNode;
 import org.codehaus.groovy.ast.ClassNode;
 
+import java.io.Serial;
+
 /**
  * An exception occurred if a dynamic method dispatch fails with an unknown 
class.
- * 
+ *
  * Note that the Missing*Exception classes were named for consistency and
  * to avoid conflicts with JDK exceptions of the same name.
  */
 public class MissingClassException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = -4059735896182191589L;
+    @Serial private static final long serialVersionUID = -4059735896182191589L;
     private final String type;
 
     public MissingClassException(String type, ASTNode node, String message) {
@@ -43,7 +45,7 @@ public class MissingClassException extends 
GroovyRuntimeException {
     }
 
     /**
-     * 
+     *
      * @return The type that could not be resolved
      */
     public String getType() {
diff --git a/src/main/java/groovy/lang/MissingFieldException.java 
b/src/main/java/groovy/lang/MissingFieldException.java
index 263f767a1e..5db1dc1ebb 100644
--- a/src/main/java/groovy/lang/MissingFieldException.java
+++ b/src/main/java/groovy/lang/MissingFieldException.java
@@ -18,15 +18,17 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * An exception occurred if a dynamic field dispatch fails with an unknown 
field.
- * 
+ *
  * Note that the Missing*Exception classes were named for consistency and
  * to avoid conflicts with JDK exceptions of the same name.
  */
 public class MissingFieldException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = -9209464582858098430L;
+    @Serial private static final long serialVersionUID = -9209464582858098430L;
     private final String field;
     private final Class type;
 
@@ -56,7 +58,7 @@ public class MissingFieldException extends 
GroovyRuntimeException {
     }
 
     /**
-     * 
+     *
      * @return The type on which the field was attempted to be called
      */
     public Class getType() {
diff --git a/src/main/java/groovy/lang/MissingMethodException.java 
b/src/main/java/groovy/lang/MissingMethodException.java
index 0efc4d1a46..ffd3a11a2a 100644
--- a/src/main/java/groovy/lang/MissingMethodException.java
+++ b/src/main/java/groovy/lang/MissingMethodException.java
@@ -21,6 +21,8 @@ package groovy.lang;
 import org.codehaus.groovy.runtime.FormatHelper;
 import org.codehaus.groovy.runtime.MethodRankHelper;
 
+import java.io.Serial;
+
 /**
  * An exception occurred if a dynamic method dispatch fails with an unknown 
method.
  * <p>
@@ -29,7 +31,7 @@ import org.codehaus.groovy.runtime.MethodRankHelper;
  */
 public class MissingMethodException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = -6676430495683939401L;
+    @Serial private static final long serialVersionUID = -6676430495683939401L;
 
     private final String method;
     private final Class<?> type;
diff --git a/src/main/java/groovy/lang/MissingPropertyException.java 
b/src/main/java/groovy/lang/MissingPropertyException.java
index a693c0848f..e44138adcc 100644
--- a/src/main/java/groovy/lang/MissingPropertyException.java
+++ b/src/main/java/groovy/lang/MissingPropertyException.java
@@ -21,6 +21,8 @@ package groovy.lang;
 import org.codehaus.groovy.runtime.InvokerHelper;
 import org.codehaus.groovy.runtime.MethodRankHelper;
 
+import java.io.Serial;
+
 /**
  * An exception occurred if a dynamic property dispatch fails with an unknown 
property.
  * <p>
@@ -31,7 +33,7 @@ public class MissingPropertyException extends 
GroovyRuntimeException {
 
     public  static final Object MPE = new Object(); // synchronization?
 
-    private static final long serialVersionUID = -1780027060966200019L;
+    @Serial private static final long serialVersionUID = -1780027060966200019L;
 
     private final String property;
     private final Class  type;
diff --git a/src/main/java/groovy/lang/NamedValue.java 
b/src/main/java/groovy/lang/NamedValue.java
index c627fe09e9..42b6d18e73 100644
--- a/src/main/java/groovy/lang/NamedValue.java
+++ b/src/main/java/groovy/lang/NamedValue.java
@@ -21,6 +21,7 @@ package groovy.lang;
 import org.apache.groovy.lang.annotation.Incubating;
 import org.codehaus.groovy.runtime.FormatHelper;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Map;
 import java.util.Objects;
@@ -33,7 +34,7 @@ import java.util.Objects;
  */
 @Incubating
 public class NamedValue<T> implements Serializable {
-    private static final long serialVersionUID = 8853713635573845253L;
+    @Serial private static final long serialVersionUID = 8853713635573845253L;
     private final String name;
     private final T val;
 
diff --git a/src/main/java/groovy/lang/NonEmptySequence.java 
b/src/main/java/groovy/lang/NonEmptySequence.java
index 3e8e126f23..8e8e7de55b 100644
--- a/src/main/java/groovy/lang/NonEmptySequence.java
+++ b/src/main/java/groovy/lang/NonEmptySequence.java
@@ -18,6 +18,7 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
 import java.util.List;
 
 /**
@@ -26,7 +27,7 @@ import java.util.List;
  */
 public class NonEmptySequence extends Sequence {
 
-    private static final long serialVersionUID = 1614604919062836998L;
+    @Serial private static final long serialVersionUID = 1614604919062836998L;
 
     public NonEmptySequence() {
         super(null);
diff --git a/src/main/java/groovy/lang/NumberRange.java 
b/src/main/java/groovy/lang/NumberRange.java
index 828c2974bf..c6fc5c2670 100644
--- a/src/main/java/groovy/lang/NumberRange.java
+++ b/src/main/java/groovy/lang/NumberRange.java
@@ -23,6 +23,7 @@ import org.codehaus.groovy.runtime.IteratorClosureAdapter;
 import org.codehaus.groovy.runtime.RangeInfo;
 import org.codehaus.groovy.runtime.typehandling.NumberMath;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -54,7 +55,7 @@ import static 
org.codehaus.groovy.runtime.dgmimpl.NumberNumberPlus.plus;
  */
 public class NumberRange extends AbstractList<Comparable> implements 
Range<Comparable>, Serializable {
 
-    private static final long serialVersionUID = 5107424833653948484L;
+    @Serial private static final long serialVersionUID = 5107424833653948484L;
     /**
      * The first value in the range.
      */
diff --git a/src/main/java/groovy/lang/ReadOnlyPropertyException.java 
b/src/main/java/groovy/lang/ReadOnlyPropertyException.java
index bc3dc9863b..15f1ae8cac 100644
--- a/src/main/java/groovy/lang/ReadOnlyPropertyException.java
+++ b/src/main/java/groovy/lang/ReadOnlyPropertyException.java
@@ -18,12 +18,14 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * This exception is thrown if an attempt is made to set a read-only property.
  */
 public class ReadOnlyPropertyException extends MissingPropertyException {
 
-    private static final long serialVersionUID = -1800912081930896077L;
+    @Serial private static final long serialVersionUID = -1800912081930896077L;
 
     public ReadOnlyPropertyException(final String property, final Class type) {
         super("Cannot set read-only property: " + property + " for class: " + 
type.getName(), property, type);
diff --git a/src/main/java/groovy/lang/Reference.java 
b/src/main/java/groovy/lang/Reference.java
index e3bea35d52..89ff168817 100644
--- a/src/main/java/groovy/lang/Reference.java
+++ b/src/main/java/groovy/lang/Reference.java
@@ -20,6 +20,7 @@ package groovy.lang;
 
 import org.codehaus.groovy.runtime.InvokerHelper;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 /**
@@ -27,7 +28,7 @@ import java.io.Serializable;
  */
 public class Reference<T> extends GroovyObjectSupport implements Serializable {
 
-    private static final long serialVersionUID = 4963704631487573488L;
+    @Serial private static final long serialVersionUID = 4963704631487573488L;
     private T value;
 
     public Reference() {
diff --git a/src/main/java/groovy/lang/Sequence.java 
b/src/main/java/groovy/lang/Sequence.java
index c5bca30ef7..a620193649 100644
--- a/src/main/java/groovy/lang/Sequence.java
+++ b/src/main/java/groovy/lang/Sequence.java
@@ -21,6 +21,7 @@ package groovy.lang;
 import org.codehaus.groovy.runtime.InvokerHelper;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -31,7 +32,7 @@ import java.util.List;
  */
 public class Sequence extends ArrayList implements GroovyObject {
 
-    private static final long serialVersionUID = 5697409354934589471L;
+    @Serial private static final long serialVersionUID = 5697409354934589471L;
     private transient MetaClass metaClass = 
InvokerHelper.getMetaClass(getClass());
     private final Class type;
     private int hashCode;
diff --git a/src/main/java/groovy/lang/SpreadListEvaluatingException.java 
b/src/main/java/groovy/lang/SpreadListEvaluatingException.java
index f3360d328a..c98fc348aa 100644
--- a/src/main/java/groovy/lang/SpreadListEvaluatingException.java
+++ b/src/main/java/groovy/lang/SpreadListEvaluatingException.java
@@ -18,8 +18,10 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 public class SpreadListEvaluatingException extends GroovyRuntimeException {
-    private static final long serialVersionUID = 4565947835333349093L;
+    @Serial private static final long serialVersionUID = 4565947835333349093L;
 
     public SpreadListEvaluatingException(String message) {
         super(message);
diff --git a/src/main/java/groovy/lang/SpreadMap.java 
b/src/main/java/groovy/lang/SpreadMap.java
index e147dd24d5..57ec4cf9a8 100644
--- a/src/main/java/groovy/lang/SpreadMap.java
+++ b/src/main/java/groovy/lang/SpreadMap.java
@@ -20,6 +20,7 @@ package groovy.lang;
 
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
@@ -29,7 +30,7 @@ import java.util.Map;
  * Helper to turn a list with an even number of elements into a Map.
  */
 public class SpreadMap extends HashMap {
-    private static final long serialVersionUID = 3827653766235954251L;
+    @Serial private static final long serialVersionUID = 3827653766235954251L;
     private int hashCode;
 
     public SpreadMap(Object[] values) {
diff --git a/src/main/java/groovy/lang/SpreadMapEvaluatingException.java 
b/src/main/java/groovy/lang/SpreadMapEvaluatingException.java
index ee9dd21518..e513b616db 100644
--- a/src/main/java/groovy/lang/SpreadMapEvaluatingException.java
+++ b/src/main/java/groovy/lang/SpreadMapEvaluatingException.java
@@ -18,8 +18,10 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 public class SpreadMapEvaluatingException extends GroovyRuntimeException {
-    private static final long serialVersionUID = 4347220269418595368L;
+    @Serial private static final long serialVersionUID = 4347220269418595368L;
 
     public SpreadMapEvaluatingException(String message) {
         super(message);
diff --git a/src/main/java/groovy/lang/StringWriterIOException.java 
b/src/main/java/groovy/lang/StringWriterIOException.java
index f178b48208..b9ebd8daa5 100644
--- a/src/main/java/groovy/lang/StringWriterIOException.java
+++ b/src/main/java/groovy/lang/StringWriterIOException.java
@@ -19,13 +19,14 @@
 package groovy.lang;
 
 import java.io.IOException;
+import java.io.Serial;
 
 /**
  * An IO exception occurred trying to append to a StringWriter which should 
never happen.
  */
 public class StringWriterIOException extends RuntimeException {
 
-    private static final long serialVersionUID = -504499949457372681L;
+    @Serial private static final long serialVersionUID = -504499949457372681L;
 
     public StringWriterIOException(IOException e) {
         super(e);
diff --git a/src/main/java/groovy/lang/TrampolineClosure.java 
b/src/main/java/groovy/lang/TrampolineClosure.java
index e94e4309fa..268fd01e2b 100644
--- a/src/main/java/groovy/lang/TrampolineClosure.java
+++ b/src/main/java/groovy/lang/TrampolineClosure.java
@@ -18,6 +18,8 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * A TrampolineClosure wraps a closure that needs to be executed on a 
functional trampoline.
  * Upon calling, a TrampolineClosure will call the original closure waiting 
for its result.
@@ -28,7 +30,7 @@ package groovy.lang;
  */
 final class TrampolineClosure<V> extends Closure<V> {
 
-    private static final long serialVersionUID = -4096349147398489925L;
+    @Serial private static final long serialVersionUID = -4096349147398489925L;
     private final Closure<V> original;
 
     TrampolineClosure(final Closure<V> original) {
diff --git a/src/main/java/groovy/lang/Tuple.java 
b/src/main/java/groovy/lang/Tuple.java
index c2e05e1ff3..5e236104b2 100644
--- a/src/main/java/groovy/lang/Tuple.java
+++ b/src/main/java/groovy/lang/Tuple.java
@@ -20,6 +20,7 @@ package groovy.lang;
 
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Arrays;
@@ -31,7 +32,7 @@ import java.util.RandomAccess;
  * Represents a list of Objects.
  */
 public class Tuple<E> extends AbstractList<E> implements Serializable, 
Cloneable, Comparable<Tuple<E>>, RandomAccess {
-    private static final long serialVersionUID = -6707770506387821031L;
+    @Serial private static final long serialVersionUID = -6707770506387821031L;
     private final E[] contents;
 
     @SafeVarargs
diff --git a/src/main/java/groovy/lang/Tuple0.java 
b/src/main/java/groovy/lang/Tuple0.java
index 18c88ee9e3..c8174b88a7 100644
--- a/src/main/java/groovy/lang/Tuple0.java
+++ b/src/main/java/groovy/lang/Tuple0.java
@@ -18,13 +18,15 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 0 typed Object.
  *
  * @since 3.0.0
  */
 public final class Tuple0 extends Tuple {
-    private static final long serialVersionUID = -3791115121904072346L;
+    @Serial private static final long serialVersionUID = -3791115121904072346L;
     public static final Tuple0 INSTANCE = new Tuple0();
 
     private Tuple0() {}
diff --git a/src/main/java/groovy/lang/Tuple1.java 
b/src/main/java/groovy/lang/Tuple1.java
index 200eb1b909..17052876a6 100644
--- a/src/main/java/groovy/lang/Tuple1.java
+++ b/src/main/java/groovy/lang/Tuple1.java
@@ -18,13 +18,15 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 1 typed Object.
  *
  * @since 2.5.0
  */
 public final class Tuple1<T1> extends Tuple {
-    private static final long serialVersionUID = -4647790147461409603L;
+    @Serial private static final long serialVersionUID = -4647790147461409603L;
     private final T1 v1;
 
     public Tuple1(T1 t1) {
diff --git a/src/main/java/groovy/lang/Tuple10.java 
b/src/main/java/groovy/lang/Tuple10.java
index bcd8aab082..a953cd2a1a 100644
--- a/src/main/java/groovy/lang/Tuple10.java
+++ b/src/main/java/groovy/lang/Tuple10.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 10 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> extends 
Tuple {
-    private static final long serialVersionUID = 7824474731525795360L;
+    @Serial private static final long serialVersionUID = 7824474731525795360L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple11.java 
b/src/main/java/groovy/lang/Tuple11.java
index 0095b12b7f..048aa59bd4 100644
--- a/src/main/java/groovy/lang/Tuple11.java
+++ b/src/main/java/groovy/lang/Tuple11.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 10 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> 
extends Tuple {
-    private static final long serialVersionUID = -8882524414681687282L;
+    @Serial private static final long serialVersionUID = -8882524414681687282L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple12.java 
b/src/main/java/groovy/lang/Tuple12.java
index 244507db67..555c948042 100644
--- a/src/main/java/groovy/lang/Tuple12.java
+++ b/src/main/java/groovy/lang/Tuple12.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 12 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> 
extends Tuple {
-    private static final long serialVersionUID = 8297587976812329899L;
+    @Serial private static final long serialVersionUID = 8297587976812329899L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple13.java 
b/src/main/java/groovy/lang/Tuple13.java
index 002070a800..bcc22d3fda 100644
--- a/src/main/java/groovy/lang/Tuple13.java
+++ b/src/main/java/groovy/lang/Tuple13.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 13 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 
T13> extends Tuple {
-    private static final long serialVersionUID = -3709443502209750114L;
+    @Serial private static final long serialVersionUID = -3709443502209750114L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple14.java 
b/src/main/java/groovy/lang/Tuple14.java
index 866bf4c983..5c9e827c91 100644
--- a/src/main/java/groovy/lang/Tuple14.java
+++ b/src/main/java/groovy/lang/Tuple14.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 14 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 
T13, T14> extends Tuple {
-    private static final long serialVersionUID = -8866382365396941648L;
+    @Serial private static final long serialVersionUID = -8866382365396941648L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple15.java 
b/src/main/java/groovy/lang/Tuple15.java
index 907907e09e..958055a5f6 100644
--- a/src/main/java/groovy/lang/Tuple15.java
+++ b/src/main/java/groovy/lang/Tuple15.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 15 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 
T13, T14, T15> extends Tuple {
-    private static final long serialVersionUID = -8866382365396941648L;
+    @Serial private static final long serialVersionUID = -8866382365396941648L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple16.java 
b/src/main/java/groovy/lang/Tuple16.java
index 270bb194f7..f46c8142b9 100644
--- a/src/main/java/groovy/lang/Tuple16.java
+++ b/src/main/java/groovy/lang/Tuple16.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 16 typed Objects.
  *
  * @since 3.0.0
  */
 public final class Tuple16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, 
T13, T14, T15, T16> extends Tuple {
-    private static final long serialVersionUID = -8866382365396941648L;
+    @Serial private static final long serialVersionUID = -8866382365396941648L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple2.java 
b/src/main/java/groovy/lang/Tuple2.java
index 0963b6e7cc..427a9e06c6 100644
--- a/src/main/java/groovy/lang/Tuple2.java
+++ b/src/main/java/groovy/lang/Tuple2.java
@@ -18,11 +18,13 @@
  */
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 2 typed Objects.
  */
 public final class Tuple2<T1, T2> extends Tuple {
-    private static final long serialVersionUID = 9006144674906325597L;
+    @Serial private static final long serialVersionUID = 9006144674906325597L;
     private final T1 v1;
     private final T2 v2;
 
diff --git a/src/main/java/groovy/lang/Tuple3.java 
b/src/main/java/groovy/lang/Tuple3.java
index d2a91ded3c..c4021d2615 100644
--- a/src/main/java/groovy/lang/Tuple3.java
+++ b/src/main/java/groovy/lang/Tuple3.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 3 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple3<T1, T2, T3> extends Tuple {
-    private static final long serialVersionUID = 8469774237154310687L;
+    @Serial private static final long serialVersionUID = 8469774237154310687L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple4.java 
b/src/main/java/groovy/lang/Tuple4.java
index 8d89c07cf0..e00d42461e 100644
--- a/src/main/java/groovy/lang/Tuple4.java
+++ b/src/main/java/groovy/lang/Tuple4.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 4 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple4<T1, T2, T3, T4> extends Tuple {
-    private static final long serialVersionUID = -7788878731471377207L;
+    @Serial private static final long serialVersionUID = -7788878731471377207L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple5.java 
b/src/main/java/groovy/lang/Tuple5.java
index d9f2d3cc69..604406276e 100644
--- a/src/main/java/groovy/lang/Tuple5.java
+++ b/src/main/java/groovy/lang/Tuple5.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 5 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple5<T1, T2, T3, T4, T5> extends Tuple {
-    private static final long serialVersionUID = 6722094358774027115L;
+    @Serial private static final long serialVersionUID = 6722094358774027115L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple6.java 
b/src/main/java/groovy/lang/Tuple6.java
index 8cb786f795..b59a468ebe 100644
--- a/src/main/java/groovy/lang/Tuple6.java
+++ b/src/main/java/groovy/lang/Tuple6.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 6 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple6<T1, T2, T3, T4, T5, T6> extends Tuple {
-    private static final long serialVersionUID = -7848588473093102288L;
+    @Serial private static final long serialVersionUID = -7848588473093102288L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple7.java 
b/src/main/java/groovy/lang/Tuple7.java
index d73f4dd058..ebab59bbb7 100644
--- a/src/main/java/groovy/lang/Tuple7.java
+++ b/src/main/java/groovy/lang/Tuple7.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 7 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple7<T1, T2, T3, T4, T5, T6, T7> extends Tuple {
-    private static final long serialVersionUID = 4226144828786865766L;
+    @Serial private static final long serialVersionUID = 4226144828786865766L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple8.java 
b/src/main/java/groovy/lang/Tuple8.java
index 672ed24926..6d79059ece 100644
--- a/src/main/java/groovy/lang/Tuple8.java
+++ b/src/main/java/groovy/lang/Tuple8.java
@@ -19,13 +19,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 8 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple8<T1, T2, T3, T4, T5, T6, T7, T8> extends Tuple {
-    private static final long serialVersionUID = -8895822084644138566L;
+    @Serial private static final long serialVersionUID = -8895822084644138566L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/lang/Tuple9.java 
b/src/main/java/groovy/lang/Tuple9.java
index b31892675c..ff0673e603 100644
--- a/src/main/java/groovy/lang/Tuple9.java
+++ b/src/main/java/groovy/lang/Tuple9.java
@@ -20,13 +20,15 @@
 
 package groovy.lang;
 
+import java.io.Serial;
+
 /**
  * Represents a list of 9 typed Objects.
  *
  * @since 2.5.0
  */
 public final class Tuple9<T1, T2, T3, T4, T5, T6, T7, T8, T9> extends Tuple {
-    private static final long serialVersionUID = -5181196675351911769L;
+    @Serial private static final long serialVersionUID = -5181196675351911769L;
     private final T1 v1;
     private final T2 v2;
     private final T3 v3;
diff --git a/src/main/java/groovy/namespace/QName.java 
b/src/main/java/groovy/namespace/QName.java
index 177662dc06..ffefb5b1da 100644
--- a/src/main/java/groovy/namespace/QName.java
+++ b/src/main/java/groovy/namespace/QName.java
@@ -18,6 +18,7 @@
  */
 package groovy.namespace;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 /**
@@ -30,7 +31,7 @@ import java.io.Serializable;
  * namespaceURI is a URI reference identifying the namespace.
  */
 public class QName implements Serializable {
-    private static final long serialVersionUID = -9029109610006696081L;
+    @Serial private static final long serialVersionUID = -9029109610006696081L;
 
     /** comment/shared empty string */
     private static final String EMPTY_STRING = "";
diff --git a/src/main/java/groovy/security/GroovyCodeSourcePermission.java 
b/src/main/java/groovy/security/GroovyCodeSourcePermission.java
index 2524c25c22..baead2758b 100644
--- a/src/main/java/groovy/security/GroovyCodeSourcePermission.java
+++ b/src/main/java/groovy/security/GroovyCodeSourcePermission.java
@@ -18,6 +18,7 @@
  */
 package groovy.security;
 
+import java.io.Serial;
 import java.security.BasicPermission;
 
 /**
@@ -28,7 +29,7 @@ import java.security.BasicPermission;
  */
 public final class GroovyCodeSourcePermission extends BasicPermission {
 
-    private static final long serialVersionUID = 8014290770546281019L;
+    @Serial private static final long serialVersionUID = 8014290770546281019L;
 
     public GroovyCodeSourcePermission(String name) {
         super(name);
diff --git a/src/main/java/groovy/transform/stc/IncorrectTypeHintException.java 
b/src/main/java/groovy/transform/stc/IncorrectTypeHintException.java
index 622acfd962..cf3f923d4c 100644
--- a/src/main/java/groovy/transform/stc/IncorrectTypeHintException.java
+++ b/src/main/java/groovy/transform/stc/IncorrectTypeHintException.java
@@ -21,8 +21,10 @@ package groovy.transform.stc;
 import org.codehaus.groovy.ast.MethodNode;
 import org.codehaus.groovy.syntax.SyntaxException;
 
+import java.io.Serial;
+
 public class IncorrectTypeHintException extends SyntaxException {
-    private static final long serialVersionUID = 4481159236968540419L;
+    @Serial private static final long serialVersionUID = 4481159236968540419L;
 
     public IncorrectTypeHintException(final MethodNode mn, final Throwable e, 
int line, int column) {
         super("Incorrect type hint in @ClosureParams in class 
"+mn.getDeclaringClass().getName()+" method "+mn.getTypeDescriptor()+" : 
"+e.getMessage(), e, line, column);
diff --git a/src/main/java/groovy/util/ClosureComparator.java 
b/src/main/java/groovy/util/ClosureComparator.java
index 59852a6d2c..79494f7676 100644
--- a/src/main/java/groovy/util/ClosureComparator.java
+++ b/src/main/java/groovy/util/ClosureComparator.java
@@ -21,6 +21,7 @@ package groovy.util;
 import groovy.lang.Closure;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Comparator;
 
@@ -29,7 +30,7 @@ import java.util.Comparator;
  */
 public class ClosureComparator<T> implements Comparator<T>, Serializable {
 
-    private static final long serialVersionUID = -4593521535656429522L;
+    @Serial private static final long serialVersionUID = -4593521535656429522L;
     Closure closure;
 
     public ClosureComparator(Closure closure) {
diff --git a/src/main/java/groovy/util/Node.java 
b/src/main/java/groovy/util/Node.java
index e22103f456..9d465735a0 100644
--- a/src/main/java/groovy/util/Node.java
+++ b/src/main/java/groovy/util/Node.java
@@ -30,6 +30,7 @@ import org.codehaus.groovy.runtime.StringGroovyMethods;
 import org.codehaus.groovy.util.ListHashMap;
 
 import java.io.PrintWriter;
+import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.BigInteger;
@@ -58,7 +59,7 @@ public class Node implements Serializable, Cloneable {
         
setMetaClass(GroovySystem.getMetaClassRegistry().getMetaClass(Node.class), 
Node.class);
     }
 
-    private static final long serialVersionUID = 4121134753270542643L;
+    @Serial private static final long serialVersionUID = 4121134753270542643L;
 
     private Node parent;
 
diff --git a/src/main/java/groovy/util/NodeList.java 
b/src/main/java/groovy/util/NodeList.java
index bfbf0912d8..9dd428fa31 100644
--- a/src/main/java/groovy/util/NodeList.java
+++ b/src/main/java/groovy/util/NodeList.java
@@ -25,6 +25,7 @@ import groovy.lang.GroovySystem;
 import groovy.lang.MetaClass;
 import groovy.namespace.QName;
 
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.Collection;
 
@@ -33,7 +34,7 @@ import java.util.Collection;
  * which provides some XPath like helper methods for GPath.
  */
 public class NodeList extends ArrayList {
-    private static final long serialVersionUID = 8307095805417308716L;
+    @Serial private static final long serialVersionUID = 8307095805417308716L;
 
     static {
         // wrap the standard MetaClass with the delegate
diff --git a/src/main/java/groovy/util/OrderBy.java 
b/src/main/java/groovy/util/OrderBy.java
index 7abb31a271..7ca28ea8cf 100644
--- a/src/main/java/groovy/util/OrderBy.java
+++ b/src/main/java/groovy/util/OrderBy.java
@@ -22,6 +22,7 @@ import groovy.lang.Closure;
 import org.codehaus.groovy.runtime.NumberAwareComparator;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Comparator;
@@ -33,7 +34,7 @@ import java.util.List;
  */
 public class OrderBy<T> implements Comparator<T>, Serializable {
 
-    private static final long serialVersionUID = 8385130064804116654L;
+    @Serial private static final long serialVersionUID = 8385130064804116654L;
     private final List<Closure> closures;
     private boolean equalityCheck;
     private final NumberAwareComparator<Object> numberAwareComparator = new 
NumberAwareComparator<Object>();
diff --git a/src/main/java/groovy/util/ResourceException.java 
b/src/main/java/groovy/util/ResourceException.java
index a017a6f750..d32e36975a 100644
--- a/src/main/java/groovy/util/ResourceException.java
+++ b/src/main/java/groovy/util/ResourceException.java
@@ -18,9 +18,11 @@
  */
 package groovy.util;
 
+import java.io.Serial;
+
 public class ResourceException extends Exception {
 
-    private static final long serialVersionUID = -4640685456255837192L;
+    @Serial private static final long serialVersionUID = -4640685456255837192L;
 
     /**
      *
diff --git a/src/main/java/groovy/util/ScriptException.java 
b/src/main/java/groovy/util/ScriptException.java
index f8dcf78e3b..5d12d047f9 100644
--- a/src/main/java/groovy/util/ScriptException.java
+++ b/src/main/java/groovy/util/ScriptException.java
@@ -18,9 +18,11 @@
  */
 package groovy.util;
 
+import java.io.Serial;
+
 public class ScriptException extends Exception {
 
-    private static final long serialVersionUID = 3447547760007143671L;
+    @Serial private static final long serialVersionUID = 3447547760007143671L;
 
     /**
      *
diff --git a/src/main/java/org/apache/groovy/antlr/LexerFrame.java 
b/src/main/java/org/apache/groovy/antlr/LexerFrame.java
index 8259297b3d..88ca3c82ce 100644
--- a/src/main/java/org/apache/groovy/antlr/LexerFrame.java
+++ b/src/main/java/org/apache/groovy/antlr/LexerFrame.java
@@ -52,10 +52,7 @@ import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
-import java.io.File;
-import java.io.FileReader;
-import java.io.Reader;
-import java.io.StringReader;
+import java.io.*;
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
 import java.util.HashMap;
@@ -67,7 +64,7 @@ import java.util.Map;
  */
 public class LexerFrame extends JFrame implements ActionListener {
     private static final System.Logger LOGGER = 
System.getLogger(LexerFrame.class.getName());
-    private static final long serialVersionUID = 2715693043143492893L;
+    @Serial private static final long serialVersionUID = 2715693043143492893L;
     private static final Class<GroovyLexer> TOKEN_TYPES_CLASS = 
GroovyLexer.class;
     private static final Font MONOSPACED_FONT = new Font("Monospaced", 
Font.PLAIN, 12);
     private final JSplitPane jSplitPane1 = new JSplitPane();
@@ -162,7 +159,7 @@ public class LexerFrame extends JFrame implements 
ActionListener {
     }
 
     private final Action loadFileAction = new AbstractAction("Open File...") {
-        private static final long serialVersionUID = 4541927184172762704L;
+        @Serial private static final long serialVersionUID = 
4541927184172762704L;
 
         @Override
         public void actionPerformed(ActionEvent ae) {
@@ -305,7 +302,7 @@ public class LexerFrame extends JFrame implements 
ActionListener {
     }
 
     private static class HScrollableTextPane extends JTextPane {
-        private static final long serialVersionUID = -8582328309470654441L;
+        @Serial private static final long serialVersionUID = 
-8582328309470654441L;
 
         @Override
         public boolean getScrollableTracksViewportWidth() {
diff --git a/src/main/java/org/apache/groovy/io/StringBuilderWriter.java 
b/src/main/java/org/apache/groovy/io/StringBuilderWriter.java
index 6334820eac..435a2a319d 100644
--- a/src/main/java/org/apache/groovy/io/StringBuilderWriter.java
+++ b/src/main/java/org/apache/groovy/io/StringBuilderWriter.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.io;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.io.Writer;
 
@@ -37,7 +38,7 @@ import java.io.Writer;
  */
 public class StringBuilderWriter extends Writer implements Serializable {
 
-    private static final long serialVersionUID = -146927496096066153L;
+    @Serial private static final long serialVersionUID = -146927496096066153L;
 
     /** The append target. */
     private final StringBuilder builder;
diff --git 
a/src/main/java/org/apache/groovy/util/JavaShellCompilationException.java 
b/src/main/java/org/apache/groovy/util/JavaShellCompilationException.java
index 833818af3a..921761ed32 100644
--- a/src/main/java/org/apache/groovy/util/JavaShellCompilationException.java
+++ b/src/main/java/org/apache/groovy/util/JavaShellCompilationException.java
@@ -20,8 +20,10 @@ package org.apache.groovy.util;
 
 import groovy.lang.GroovyRuntimeException;
 
+import java.io.Serial;
+
 public class JavaShellCompilationException extends GroovyRuntimeException {
-    private static final long serialVersionUID = 8048143189569571714L;
+    @Serial private static final long serialVersionUID = 8048143189569571714L;
 
     public JavaShellCompilationException(String message) {
         super(message);
diff --git a/src/main/java/org/apache/groovy/util/ReversedList.java 
b/src/main/java/org/apache/groovy/util/ReversedList.java
index e224e4552f..56b43fcbfd 100644
--- a/src/main/java/org/apache/groovy/util/ReversedList.java
+++ b/src/main/java/org/apache/groovy/util/ReversedList.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.util;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.List;
@@ -29,7 +30,7 @@ import java.util.RandomAccess;
  * @since 4.0.0
  */
 public class ReversedList<E> extends AbstractList<E> implements RandomAccess, 
Serializable {
-    private static final long serialVersionUID = -1640781973848935560L;
+    @Serial private static final long serialVersionUID = -1640781973848935560L;
     private final List<E> delegate;
 
     public ReversedList(List<E> list) {
diff --git 
a/src/main/java/org/apache/groovy/util/concurrent/ConcurrentReferenceHashMap.java
 
b/src/main/java/org/apache/groovy/util/concurrent/ConcurrentReferenceHashMap.java
index 7441fa0978..b27edd3f24 100644
--- 
a/src/main/java/org/apache/groovy/util/concurrent/ConcurrentReferenceHashMap.java
+++ 
b/src/main/java/org/apache/groovy/util/concurrent/ConcurrentReferenceHashMap.java
@@ -25,6 +25,7 @@ package org.apache.groovy.util.concurrent;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.io.Serializable;
 import java.lang.ref.Reference;
 import java.lang.ref.ReferenceQueue;
@@ -234,7 +235,7 @@ public class ConcurrentReferenceHashMap<K, V> extends 
AbstractMap<K, V> implemen
      */
     private static final int RETRIES_BEFORE_LOCK = 2;
 
-    private static final long serialVersionUID = 7249069246763182397L;
+    @Serial private static final long serialVersionUID = 7249069246763182397L;
 
     /* ---------------- Fields -------------- */
 
@@ -504,7 +505,7 @@ public class ConcurrentReferenceHashMap<K, V> extends 
AbstractMap<K, V> implemen
          * count field are marked in code comments.
          */
 
-        private static final long serialVersionUID = 2249069246763182397L;
+        @Serial private static final long serialVersionUID = 
2249069246763182397L;
 
         /**
          * The number of elements in this segment's region.
@@ -1772,7 +1773,7 @@ public class ConcurrentReferenceHashMap<K, V> extends 
AbstractMap<K, V> implemen
      * This class is needed for JDK5 compatibility.
      */
     protected static class SimpleEntry<K, V> implements Entry<K, V>, 
Serializable {
-        private static final long serialVersionUID = -8499721149061103585L;
+        @Serial private static final long serialVersionUID = 
-8499721149061103585L;
 
         protected final K key;
         protected V value;
@@ -1829,7 +1830,7 @@ public class ConcurrentReferenceHashMap<K, V> extends 
AbstractMap<K, V> implemen
      * changes to the underlying map.
      */
     protected class WriteThroughEntry extends SimpleEntry<K, V> {
-        private static final long serialVersionUID = -7900634345345313646L;
+        @Serial private static final long serialVersionUID = 
-7900634345345313646L;
 
         protected WriteThroughEntry(K k, V v) {
             super(k, v);
diff --git 
a/src/main/java/org/apache/groovy/util/concurrent/ManagedIdentityConcurrentMap.java
 
b/src/main/java/org/apache/groovy/util/concurrent/ManagedIdentityConcurrentMap.java
index b090a3ce1c..dfca4b6331 100644
--- 
a/src/main/java/org/apache/groovy/util/concurrent/ManagedIdentityConcurrentMap.java
+++ 
b/src/main/java/org/apache/groovy/util/concurrent/ManagedIdentityConcurrentMap.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.util.concurrent;
 
+import java.io.Serial;
 import java.util.EnumSet;
 
 /**
@@ -30,7 +31,7 @@ import java.util.EnumSet;
  * @since 4.0.0
  */
 public class ManagedIdentityConcurrentMap<K, V> extends 
ConcurrentReferenceHashMap<K, V> {
-    private static final long serialVersionUID = 1046734443288902802L;
+    @Serial private static final long serialVersionUID = 1046734443288902802L;
 
     /**
      * Creates a new, empty map with the key weak reference
diff --git 
a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
 
b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
index 313e841451..63bb6326c8 100644
--- 
a/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
+++ 
b/src/main/java/org/apache/groovy/util/concurrent/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
@@ -22,6 +22,7 @@ import javax.annotation.concurrent.Immutable;
 import javax.annotation.concurrent.ThreadSafe;
 import java.io.InvalidObjectException;
 import java.io.ObjectInputStream;
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
@@ -1458,7 +1459,7 @@ public final class ConcurrentLinkedHashMap<K, V> extends 
AbstractMap<K, V>
 
   /** An entry that allows updates to write through to the map. */
   final class WriteThroughEntry extends SimpleEntry<K, V> {
-    private static final long serialVersionUID = 1;
+      @Serial private static final long serialVersionUID = 1;
 
     WriteThroughEntry(Node<K, V> node) {
       super(node.key, node.getValue());
@@ -1477,7 +1478,7 @@ public final class ConcurrentLinkedHashMap<K, V> extends 
AbstractMap<K, V>
 
   /** A weigher that enforces that the weight falls within a valid range. */
   static final class BoundedEntryWeigher<K, V> implements EntryWeigher<K, V>, 
Serializable {
-    private static final long serialVersionUID = 1;
+      @Serial private static final long serialVersionUID = 1;
     final EntryWeigher<? super K, ? super V> weigher;
 
     BoundedEntryWeigher(EntryWeigher<? super K, ? super V> weigher) {
@@ -1514,9 +1515,9 @@ public final class ConcurrentLinkedHashMap<K, V> extends 
AbstractMap<K, V>
     @Override public void onEviction(Object key, Object value) {}
   }
 
-  /* ---------------- Serialization Support -------------- */
+    /* ---------------- Serialization Support -------------- */
 
-  private static final long serialVersionUID = 1;
+    @Serial private static final long serialVersionUID = 1;
 
   Object writeReplace() {
     return new SerializationProxy<>(this);
@@ -1559,7 +1560,7 @@ public final class ConcurrentLinkedHashMap<K, V> extends 
AbstractMap<K, V>
       return map;
     }
 
-    private static final long serialVersionUID = 1;
+      @Serial private static final long serialVersionUID = 1;
   }
 
   /* ---------------- Builder -------------- */
diff --git a/src/main/java/org/codehaus/groovy/GroovyBugError.java 
b/src/main/java/org/codehaus/groovy/GroovyBugError.java
index af32df52bf..d90dc24273 100644
--- a/src/main/java/org/codehaus/groovy/GroovyBugError.java
+++ b/src/main/java/org/codehaus/groovy/GroovyBugError.java
@@ -18,6 +18,8 @@
  */
 package org.codehaus.groovy;
 
+import java.io.Serial;
+
 /**
  * This class represents an error that is thrown when a bug is
  * recognized inside the runtime. Basically it is thrown when
@@ -25,7 +27,7 @@ package org.codehaus.groovy;
  */
 public class GroovyBugError extends AssertionError {
 
-    private static final long serialVersionUID = -9165076784700059275L;
+    @Serial private static final long serialVersionUID = -9165076784700059275L;
     // message string
     private String message;
     // optional exception
diff --git a/src/main/java/org/codehaus/groovy/GroovyException.java 
b/src/main/java/org/codehaus/groovy/GroovyException.java
index 3358ccc65b..af3d45971f 100644
--- a/src/main/java/org/codehaus/groovy/GroovyException.java
+++ b/src/main/java/org/codehaus/groovy/GroovyException.java
@@ -18,8 +18,10 @@
  */
 package org.codehaus.groovy;
 
+import java.io.Serial;
+
 public class GroovyException extends Exception implements 
GroovyExceptionInterface {
-    private static final long serialVersionUID = -61298636122042408L;
+    @Serial private static final long serialVersionUID = -61298636122042408L;
     private boolean fatal = true;
 
     public GroovyException() {
diff --git 
a/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java 
b/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
index 280f59dd04..3bd0bfdaef 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
@@ -18,12 +18,14 @@
  */
 package org.codehaus.groovy.classgen;
 
+import java.io.Serial;
+
 /**
  * An exception thrown by the class generator
  */
 public class ClassGeneratorException extends RuntimeException {
 
-    private static final long serialVersionUID = 440899360174632769L;
+    @Serial private static final long serialVersionUID = 440899360174632769L;
 
     public ClassGeneratorException(String message) {
         super(message);
diff --git 
a/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java 
b/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
index d57f6312f8..e342aef2f7 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
@@ -20,13 +20,15 @@ package org.codehaus.groovy.control;
 
 import groovy.lang.GroovyRuntimeException;
 
+import java.io.Serial;
+
 
 /**
  * Thrown when compilation fails from source errors.
  */
 public class CompilationFailedException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = 4500269747315896966L;
+    @Serial private static final long serialVersionUID = 4500269747315896966L;
     protected int phase;   // The phase in which the failures occurred
     protected ProcessingUnit unit;    // The *Unit object this exception wraps
 
diff --git 
a/src/main/java/org/codehaus/groovy/control/ConfigurationException.java 
b/src/main/java/org/codehaus/groovy/control/ConfigurationException.java
index 1dd92d2622..7e6291d8da 100644
--- a/src/main/java/org/codehaus/groovy/control/ConfigurationException.java
+++ b/src/main/java/org/codehaus/groovy/control/ConfigurationException.java
@@ -20,11 +20,13 @@ package org.codehaus.groovy.control;
 
 import org.codehaus.groovy.GroovyExceptionInterface;
 
+import java.io.Serial;
+
 /**
  * Thrown when configuration data is invalid.
  */
 public class ConfigurationException extends RuntimeException implements 
GroovyExceptionInterface {
-    private static final long serialVersionUID = -3844401402301111613L;
+    @Serial private static final long serialVersionUID = -3844401402301111613L;
 
     protected Exception cause;   // The phase in which the failures occurred
 
diff --git a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java 
b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
index af59e50fc7..f8c0caafd4 100644
--- a/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
+++ b/src/main/java/org/codehaus/groovy/control/ErrorCollector.java
@@ -28,6 +28,7 @@ import org.codehaus.groovy.syntax.CSTNode;
 import org.codehaus.groovy.syntax.SyntaxException;
 
 import java.io.PrintWriter;
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.LinkedList;
 import java.util.List;
@@ -39,7 +40,7 @@ import java.util.List;
  */
 public class ErrorCollector implements Serializable {
 
-    private static final long serialVersionUID = 2844774170905056755L;
+    @Serial private static final long serialVersionUID = 2844774170905056755L;
 
     /**
      * ErrorMessages collected during processing
diff --git 
a/src/main/java/org/codehaus/groovy/control/MultipleCompilationErrorsException.java
 
b/src/main/java/org/codehaus/groovy/control/MultipleCompilationErrorsException.java
index d700812771..55669a03af 100644
--- 
a/src/main/java/org/codehaus/groovy/control/MultipleCompilationErrorsException.java
+++ 
b/src/main/java/org/codehaus/groovy/control/MultipleCompilationErrorsException.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.control;
 import org.apache.groovy.io.StringBuilderWriter;
 
 import java.io.PrintWriter;
+import java.io.Serial;
 import java.io.Writer;
 
 /**
@@ -29,7 +30,7 @@ import java.io.Writer;
 public class MultipleCompilationErrorsException extends
         CompilationFailedException {
 
-    private static final long serialVersionUID = 8583586586290252555L;
+    @Serial private static final long serialVersionUID = 8583586586290252555L;
     protected ErrorCollector collector;
 
     public MultipleCompilationErrorsException(ErrorCollector ec) {
diff --git 
a/src/main/java/org/codehaus/groovy/reflection/CacheAccessControlException.java 
b/src/main/java/org/codehaus/groovy/reflection/CacheAccessControlException.java
index 8dfa960ec8..36aeb1b03f 100644
--- 
a/src/main/java/org/codehaus/groovy/reflection/CacheAccessControlException.java
+++ 
b/src/main/java/org/codehaus/groovy/reflection/CacheAccessControlException.java
@@ -20,8 +20,10 @@ package org.codehaus.groovy.reflection;
 
 import groovy.lang.GroovyRuntimeException;
 
+import java.io.Serial;
+
 public class CacheAccessControlException extends GroovyRuntimeException {
-    private static final long serialVersionUID = -5315107566539656474L;
+    @Serial private static final long serialVersionUID = -5315107566539656474L;
 
     public CacheAccessControlException(String message, Throwable cause) {
         super(message, cause);
diff --git a/src/main/java/org/codehaus/groovy/runtime/ComposedClosure.java 
b/src/main/java/org/codehaus/groovy/runtime/ComposedClosure.java
index 63b0e36500..50c1d58933 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ComposedClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ComposedClosure.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.Closure;
 
+import java.io.Serial;
 import java.util.List;
 
 /**
@@ -57,7 +58,7 @@ import java.util.List;
  */
 public final class ComposedClosure<V> extends Closure<V> {
 
-    private static final long serialVersionUID = -4816724431590921285L;
+    @Serial private static final long serialVersionUID = -4816724431590921285L;
     private Closure first;
     private Closure<V> second;
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/ConversionHandler.java 
b/src/main/java/org/codehaus/groovy/runtime/ConversionHandler.java
index 93e01cdafe..69f08a2b9d 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ConversionHandler.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ConversionHandler.java
@@ -26,6 +26,7 @@ import 
org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl;
 import org.codehaus.groovy.vmplugin.VMPlugin;
 import org.codehaus.groovy.vmplugin.VMPluginFactory;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.InvocationTargetException;
@@ -40,7 +41,7 @@ import java.util.concurrent.ConcurrentMap;
  * to a given delegate.
  */
 public abstract class ConversionHandler implements InvocationHandler, 
Serializable {
-    private static final long serialVersionUID = 1162833717190835227L;
+    @Serial private static final long serialVersionUID = 1162833717190835227L;
     private final ConcurrentMap<Method, Object> handleCache = new 
ConcurrentHashMap<>(16);
     private final Object delegate;
     private MetaClass metaClass;
diff --git a/src/main/java/org/codehaus/groovy/runtime/ConvertedClosure.java 
b/src/main/java/org/codehaus/groovy/runtime/ConvertedClosure.java
index 194ee8bce3..09991c54bd 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ConvertedClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ConvertedClosure.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.Closure;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.lang.reflect.Method;
 
@@ -30,7 +31,7 @@ import static 
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation
  */
 public class ConvertedClosure extends ConversionHandler implements 
Serializable {
 
-    private static final long serialVersionUID = 1162833713450835227L;
+    @Serial private static final long serialVersionUID = 1162833713450835227L;
 
     private final String methodName;
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/ConvertedMap.java 
b/src/main/java/org/codehaus/groovy/runtime/ConvertedMap.java
index c0c98127dd..ee0010d599 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ConvertedMap.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ConvertedMap.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.Closure;
 
+import java.io.Serial;
 import java.lang.reflect.Method;
 import java.util.Map;
 
@@ -29,7 +30,7 @@ import java.util.Map;
  */
 public class ConvertedMap extends ConversionHandler {
 
-    private static final long serialVersionUID = 8535543126684786030L;
+    @Serial private static final long serialVersionUID = 8535543126684786030L;
 
     /**
      * to create a ConvertedMap object.
diff --git a/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java 
b/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
index eea7321790..7783a4c947 100644
--- a/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/CurriedClosure.java
@@ -20,6 +20,8 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.Closure;
 
+import java.io.Serial;
+
 import static org.codehaus.groovy.runtime.ArrayGroovyMethods.last;
 
 /**
@@ -49,7 +51,7 @@ import static 
org.codehaus.groovy.runtime.ArrayGroovyMethods.last;
  */
 public final class CurriedClosure<V> extends Closure<V> {
 
-    private static final long serialVersionUID = 2077643745780234126L;
+    @Serial private static final long serialVersionUID = 2077643745780234126L;
     private final Object[] curriedArguments;
     private final int minParamsExpected;
     private int index;
diff --git a/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java 
b/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
index 84497d166d..0a1c5834a1 100644
--- a/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
+++ b/src/main/java/org/codehaus/groovy/runtime/GStringImpl.java
@@ -24,6 +24,7 @@ import groovy.transform.Pure;
 import org.apache.groovy.ast.tools.ImmutablePropertyUtils;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.io.Writer;
 import java.lang.reflect.Method;
 import java.nio.charset.Charset;
@@ -37,7 +38,7 @@ import java.util.stream.Stream;
  * @see groovy.lang.GString
  */
 public class GStringImpl extends GString {
-    private static final long serialVersionUID = 3581289038662723858L;
+    @Serial private static final long serialVersionUID = 3581289038662723858L;
     private final String[] strings;
     private final boolean frozen;
     private boolean cacheable;
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/InvokerInvocationException.java 
b/src/main/java/org/codehaus/groovy/runtime/InvokerInvocationException.java
index 8db12f14fd..c8c41d2705 100644
--- a/src/main/java/org/codehaus/groovy/runtime/InvokerInvocationException.java
+++ b/src/main/java/org/codehaus/groovy/runtime/InvokerInvocationException.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.GroovyRuntimeException;
 
+import java.io.Serial;
 import java.lang.reflect.InvocationTargetException;
 
 /**
@@ -27,7 +28,7 @@ import java.lang.reflect.InvocationTargetException;
  */
 public class InvokerInvocationException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = 1337849572129640775L;
+    @Serial private static final long serialVersionUID = 1337849572129640775L;
 
     public InvokerInvocationException(InvocationTargetException e) {
         super(e.getTargetException());
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/IteratorClosureAdapter.java 
b/src/main/java/org/codehaus/groovy/runtime/IteratorClosureAdapter.java
index 6b483ca865..a89bba0ac2 100644
--- a/src/main/java/org/codehaus/groovy/runtime/IteratorClosureAdapter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/IteratorClosureAdapter.java
@@ -21,16 +21,17 @@ package org.codehaus.groovy.runtime;
 import groovy.lang.Closure;
 import groovy.lang.MetaClass;
 
+import java.io.Serial;
 import java.util.ArrayList;
 import java.util.List;
 
 /**
- * A closure which stores calls in a List so that method calls 
+ * A closure which stores calls in a List so that method calls
  * can be iterated over in a 'yield' style way
  */
 public class IteratorClosureAdapter<T> extends Closure {
 
-    private static final long serialVersionUID = -7485077849389539770L;
+    @Serial private static final long serialVersionUID = -7485077849389539770L;
     private final List<T> list = new ArrayList<T>();
     private MetaClass metaClass = InvokerHelper.getMetaClass(getClass());
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java 
b/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
index 98e2d3b929..a66a2097a8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MethodClosure.java
@@ -23,6 +23,7 @@ import groovy.lang.MetaMethod;
 import org.codehaus.groovy.reflection.ReflectionCache;
 import org.codehaus.groovy.runtime.wrappers.Wrapper;
 
+import java.io.Serial;
 import java.util.Arrays;
 
 /**
@@ -37,7 +38,7 @@ public class MethodClosure extends Closure {
 
     //
 
-    private static final long serialVersionUID = -2491254866810955844L;
+    @Serial private static final long serialVersionUID = -2491254866810955844L;
 
     /**
      * Indicates if this may be related to an instance method.
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/NumberAwareComparator.java 
b/src/main/java/org/codehaus/groovy/runtime/NumberAwareComparator.java
index 53ce3a2972..454a4fe5db 100644
--- a/src/main/java/org/codehaus/groovy/runtime/NumberAwareComparator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/NumberAwareComparator.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.runtime;
 import groovy.lang.GroovyRuntimeException;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Comparator;
 
@@ -30,7 +31,7 @@ import java.util.Comparator;
  * performs numeric type coercion if required.
  */
 public class NumberAwareComparator<T> implements Comparator<T>, Serializable {
-    private static final long serialVersionUID = 9017657289076651660L;
+    @Serial private static final long serialVersionUID = 9017657289076651660L;
     private boolean ignoreZeroSign;
 
     public NumberAwareComparator() {
diff --git a/src/main/java/org/codehaus/groovy/runtime/ScriptReference.java 
b/src/main/java/org/codehaus/groovy/runtime/ScriptReference.java
index e56756bfc9..414334d19b 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ScriptReference.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ScriptReference.java
@@ -21,12 +21,14 @@ package org.codehaus.groovy.runtime;
 import groovy.lang.Reference;
 import groovy.lang.Script;
 
+import java.io.Serial;
+
 /**
  * Represents a reference to a variable in a script
  */
 public class ScriptReference extends Reference {
 
-    private static final long serialVersionUID = -2914281513576690336L;
+    @Serial private static final long serialVersionUID = -2914281513576690336L;
     private Script script;
     private String variable;
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/WritableFile.java 
b/src/main/java/org/codehaus/groovy/runtime/WritableFile.java
index 055c96ea6c..2cf8010852 100644
--- a/src/main/java/org/codehaus/groovy/runtime/WritableFile.java
+++ b/src/main/java/org/codehaus/groovy/runtime/WritableFile.java
@@ -20,16 +20,13 @@ package org.codehaus.groovy.runtime;
 
 import groovy.lang.Writable;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.Writer;
+import java.io.*;
 
 /**
  * A Writable File.
  */
 public class WritableFile extends File implements Writable {
-    private static final long serialVersionUID = 4157767752861425917L;
+    @Serial private static final long serialVersionUID = 4157767752861425917L;
     private final String encoding;
 
     public WritableFile(final File delegate) {
diff --git a/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
index 4c6103eda2..20d5796f08 100644
--- a/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
+++ b/src/main/java/org/codehaus/groovy/runtime/memoize/CommonCache.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.runtime.memoize;
 
 import 
org.apache.groovy.util.concurrent.concurrentlinkedhashmap.ConcurrentLinkedHashMap;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.lang.ref.SoftReference;
 import java.lang.ref.WeakReference;
@@ -39,7 +40,7 @@ import java.util.Set;
  * @since 2.5.0
  */
 public class CommonCache<K, V> implements FlexibleCache<K, V>, 
ValueConvertable<V, Object>, Serializable {
-    private static final long serialVersionUID = 934699400232698324L;
+    @Serial private static final long serialVersionUID = 934699400232698324L;
     /**
      * The default load factor
      */
@@ -79,7 +80,7 @@ public class CommonCache<K, V> implements FlexibleCache<K, 
V>, ValueConvertable<
                         .build();
         }
         return new LinkedHashMap<K, V>(initialCapacity, DEFAULT_LOAD_FACTOR, 
lru) {
-            private static final long serialVersionUID = -8012450791479726621L;
+            @Serial private static final long serialVersionUID = 
-8012450791479726621L;
 
             @Override
             protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
index c951d8b48d..daa52c05eb 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentCommonCache.java
@@ -19,6 +19,8 @@
 package org.codehaus.groovy.runtime.memoize;
 
 import javax.annotation.concurrent.ThreadSafe;
+
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
@@ -34,7 +36,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
  */
 @ThreadSafe
 public class ConcurrentCommonCache<K, V> implements FlexibleCache<K, V>, 
ValueConvertable<V, Object>, Serializable {
-    private static final long serialVersionUID = -7352338549333024936L;
+    @Serial private static final long serialVersionUID = -7352338549333024936L;
 
     private final ReentrantReadWriteLock rwl = new ReentrantReadWriteLock();
     private final ReentrantReadWriteLock.ReadLock readLock = rwl.readLock();
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentSoftCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentSoftCache.java
index 85c7a9cc92..2513a97b8c 100644
--- a/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentSoftCache.java
+++ b/src/main/java/org/codehaus/groovy/runtime/memoize/ConcurrentSoftCache.java
@@ -19,6 +19,7 @@
 
 package org.codehaus.groovy.runtime.memoize;
 
+import java.io.Serial;
 import java.lang.ref.SoftReference;
 import java.util.Map;
 
@@ -29,7 +30,7 @@ import java.util.Map;
  * @param <V> real value type
  */
 public class ConcurrentSoftCache<K, V> extends ConcurrentCommonCache<K, 
SoftReference<V>> {
-    private static final long serialVersionUID = 5646536868666351819L;
+    @Serial private static final long serialVersionUID = 5646536868666351819L;
 
 
     /**
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/LRUProtectionStorage.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/LRUProtectionStorage.java
index 2f9d9c6c2e..be4a046fbe 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/memoize/LRUProtectionStorage.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/memoize/LRUProtectionStorage.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.runtime.memoize;
 
+import java.io.Serial;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
@@ -28,7 +29,7 @@ import java.util.Map;
  * The touch method can be used to renew an element and move it to the from 
the LRU queue.
  */
 final class LRUProtectionStorage extends LinkedHashMap<Object, Object> 
implements ProtectionStorage {
-    private static final long serialVersionUID = 1L;
+    @Serial private static final long serialVersionUID = 1L;
 
     private final int maxSize;
 
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/StampedCommonCache.java 
b/src/main/java/org/codehaus/groovy/runtime/memoize/StampedCommonCache.java
index 2bde08afa7..7248f2de70 100644
--- a/src/main/java/org/codehaus/groovy/runtime/memoize/StampedCommonCache.java
+++ b/src/main/java/org/codehaus/groovy/runtime/memoize/StampedCommonCache.java
@@ -19,6 +19,8 @@
 package org.codehaus.groovy.runtime.memoize;
 
 import javax.annotation.concurrent.ThreadSafe;
+
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.Map;
@@ -39,7 +41,7 @@ import java.util.concurrent.locks.StampedLock;
 @ThreadSafe
 public class StampedCommonCache<K, V> implements FlexibleCache<K, V>, 
ValueConvertable<V, Object>, Serializable {
 
-    private static final long serialVersionUID = 6760742552334555146L;
+    @Serial private static final long serialVersionUID = 6760742552334555146L;
     private final StampedLock sl = new StampedLock();
     private final CommonCache<K, V> commonCache;
 
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/memoize/UnlimitedConcurrentCache.java
 
b/src/main/java/org/codehaus/groovy/runtime/memoize/UnlimitedConcurrentCache.java
index a813620c1c..fdfb0b708a 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/memoize/UnlimitedConcurrentCache.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/memoize/UnlimitedConcurrentCache.java
@@ -19,6 +19,8 @@
 package org.codehaus.groovy.runtime.memoize;
 
 import javax.annotation.concurrent.ThreadSafe;
+
+import java.io.Serial;
 import java.io.Serializable;
 import java.lang.ref.SoftReference;
 import java.util.Collection;
@@ -32,7 +34,7 @@ import java.util.concurrent.ConcurrentHashMap;
  */
 @ThreadSafe
 public final class UnlimitedConcurrentCache<K, V> implements EvictableCache<K, 
V>, Serializable {
-    private static final long serialVersionUID = -857220494475488328L;
+    @Serial private static final long serialVersionUID = -857220494475488328L;
     private final ConcurrentHashMap<K, V> map;
 
     /**
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
index f16b136e9f..aedfc7805f 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/ConcurrentReaderHashMap.java
@@ -19,6 +19,7 @@
 package org.codehaus.groovy.runtime.metaclass;
 
 import java.io.IOException;
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.AbstractCollection;
 import java.util.AbstractMap;
@@ -139,7 +140,7 @@ import java.util.Set;
 public class ConcurrentReaderHashMap
   extends AbstractMap
   implements Cloneable, Serializable {
-  private static final long serialVersionUID = -3225682440765612861L;
+    @Serial private static final long serialVersionUID = -3225682440765612861L;
 
 
   /*
@@ -167,7 +168,7 @@ public class ConcurrentReaderHashMap
 
   /** A Serializable class for barrier lock **/
   protected static class BarrierLock implements java.io.Serializable {
-      private static final long serialVersionUID = -2159505361622844863L;
+      @Serial private static final long serialVersionUID = 
-2159505361622844863L;
   }
 
   /**
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MethodSelectionException.java
 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MethodSelectionException.java
index 06a0f3a56f..9860f5cbfb 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MethodSelectionException.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MethodSelectionException.java
@@ -23,6 +23,7 @@ import groovy.lang.MetaMethod;
 import org.codehaus.groovy.reflection.CachedConstructor;
 import org.codehaus.groovy.util.FastArray;
 
+import java.io.Serial;
 import java.lang.reflect.Modifier;
 
 /**
@@ -36,7 +37,7 @@ import java.lang.reflect.Modifier;
  */
 public class MethodSelectionException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = 8126246630023758333L;
+    @Serial private static final long serialVersionUID = 8126246630023758333L;
     private final String methodName;
     private final FastArray methods;
     private final Class[] arguments;
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExceptionNoStack.java
 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExceptionNoStack.java
index 9bc66fa6aa..8b3acb13af 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExceptionNoStack.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExceptionNoStack.java
@@ -20,9 +20,11 @@ package org.codehaus.groovy.runtime.metaclass;
 
 import groovy.lang.MissingMethodException;
 
+import java.io.Serial;
+
 public class MissingMethodExceptionNoStack extends MissingMethodException {
 
-    private static final long serialVersionUID = -4567395518573062216L;
+    @Serial private static final long serialVersionUID = -4567395518573062216L;
 
     public MissingMethodExceptionNoStack(String method, Class type, Object[] 
arguments) {
         this(method,type,arguments,false);
@@ -36,4 +38,4 @@ public class MissingMethodExceptionNoStack extends 
MissingMethodException {
     public Throwable fillInStackTrace() {
         return this;
     }
-}
\ No newline at end of file
+}
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExecutionFailed.java
 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExecutionFailed.java
index b902e789e9..cd719d6c62 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExecutionFailed.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingMethodExecutionFailed.java
@@ -18,13 +18,15 @@
  */
 package org.codehaus.groovy.runtime.metaclass;
 
+import java.io.Serial;
+
 /**
  * A stack less exception used to indicate, that the execution of a 
missingMethod
  * method failed with a MissingMethodException. This is used to prevent a call 
to
  * invokeMethod for GroovyObject implementing classes.
  */
 public class MissingMethodExecutionFailed extends 
MissingMethodExceptionNoStack {
-    private static final long serialVersionUID = -7894095278952483769L;
+    @Serial private static final long serialVersionUID = -7894095278952483769L;
     private Throwable cause;
     public MissingMethodExecutionFailed(String method, Class type, Object[] 
arguments, boolean isStatic, Throwable cause) {
         super(method, type, arguments, isStatic);
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingPropertyExceptionNoStack.java
 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingPropertyExceptionNoStack.java
index bd06f618dd..8d2f92ecb2 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingPropertyExceptionNoStack.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/metaclass/MissingPropertyExceptionNoStack.java
@@ -20,9 +20,11 @@ package org.codehaus.groovy.runtime.metaclass;
 
 import groovy.lang.MissingPropertyException;
 
+import java.io.Serial;
+
 public class MissingPropertyExceptionNoStack extends MissingPropertyException {
 
-    private static final long serialVersionUID = 8993570436675442348L;
+    @Serial private static final long serialVersionUID = 8993570436675442348L;
 
     public MissingPropertyExceptionNoStack(String propertyName, Class 
theClass) {
         super(propertyName, theClass);
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/powerassert/PowerAssertionError.java
 
b/src/main/java/org/codehaus/groovy/runtime/powerassert/PowerAssertionError.java
index 58b8d09d73..c83b508538 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/powerassert/PowerAssertionError.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/powerassert/PowerAssertionError.java
@@ -18,11 +18,13 @@
  */
 package org.codehaus.groovy.runtime.powerassert;
 
+import java.io.Serial;
+
 /**
  * Indicates that a power assertion has failed.
  */
 public class PowerAssertionError extends java.lang.AssertionError {
-    private static final long serialVersionUID = -2204531294530022591L;
+    @Serial private static final long serialVersionUID = -2204531294530022591L;
 
     public PowerAssertionError(String msg) {
         super(msg);
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/powerassert/SourceTextNotAvailableException.java
 
b/src/main/java/org/codehaus/groovy/runtime/powerassert/SourceTextNotAvailableException.java
index 819055b2cd..838a12b605 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/powerassert/SourceTextNotAvailableException.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/powerassert/SourceTextNotAvailableException.java
@@ -21,11 +21,13 @@ package org.codehaus.groovy.runtime.powerassert;
 import org.codehaus.groovy.ast.stmt.AssertStatement;
 import org.codehaus.groovy.control.SourceUnit;
 
+import java.io.Serial;
+
 /**
  * Indicates that the source text for an assertion statement is not available.
  */
 public class SourceTextNotAvailableException extends RuntimeException {
-    private static final long serialVersionUID = -3815868502019514479L;
+    @Serial private static final long serialVersionUID = -3815868502019514479L;
 
     // only accepts AssertStatementS so that better error messages can be 
produced
     public SourceTextNotAvailableException(AssertStatement stat, SourceUnit 
unit, String msg) {
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/typehandling/GroovyCastException.java
 
b/src/main/java/org/codehaus/groovy/runtime/typehandling/GroovyCastException.java
index 9996c8a5fd..f16b2d3090 100644
--- 
a/src/main/java/org/codehaus/groovy/runtime/typehandling/GroovyCastException.java
+++ 
b/src/main/java/org/codehaus/groovy/runtime/typehandling/GroovyCastException.java
@@ -18,11 +18,12 @@
  */
 package org.codehaus.groovy.runtime.typehandling;
 
+import java.io.Serial;
 import java.util.Optional;
 
 public class GroovyCastException extends ClassCastException {
 
-    private static final long serialVersionUID = 6859089155641797356L;
+    @Serial private static final long serialVersionUID = 6859089155641797356L;
 
     /**
      * @param objectToCast object we tried to cast
diff --git a/src/main/java/org/codehaus/groovy/syntax/ParserException.java 
b/src/main/java/org/codehaus/groovy/syntax/ParserException.java
index beedb1c888..27728dd05f 100644
--- a/src/main/java/org/codehaus/groovy/syntax/ParserException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/ParserException.java
@@ -18,8 +18,10 @@
  */
 package org.codehaus.groovy.syntax;
 
+import java.io.Serial;
+
 public class ParserException extends TokenException {
-    private static final long serialVersionUID = -3772086239731735693L;
+    @Serial private static final long serialVersionUID = -3772086239731735693L;
 
     public ParserException(String message, Token token) {
         super(message, token);
diff --git a/src/main/java/org/codehaus/groovy/syntax/ReadException.java 
b/src/main/java/org/codehaus/groovy/syntax/ReadException.java
index c2a433ad7b..d0e72bd77f 100644
--- a/src/main/java/org/codehaus/groovy/syntax/ReadException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/ReadException.java
@@ -21,12 +21,13 @@ package org.codehaus.groovy.syntax;
 import org.codehaus.groovy.GroovyException;
 
 import java.io.IOException;
+import java.io.Serial;
 
 /**
  * Encapsulates non-specific i/o exceptions.
  */
 public class ReadException extends GroovyException {
-    private static final long serialVersionUID = 848585058428047961L;
+    @Serial private static final long serialVersionUID = 848585058428047961L;
     private final IOException cause;
 
     public ReadException(IOException cause) {
diff --git 
a/src/main/java/org/codehaus/groovy/syntax/RuntimeParserException.java 
b/src/main/java/org/codehaus/groovy/syntax/RuntimeParserException.java
index 821018a34b..3a0cebb953 100644
--- a/src/main/java/org/codehaus/groovy/syntax/RuntimeParserException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/RuntimeParserException.java
@@ -21,13 +21,15 @@ package org.codehaus.groovy.syntax;
 import groovy.lang.GroovyRuntimeException;
 import org.codehaus.groovy.ast.ASTNode;
 
+import java.io.Serial;
+
 /**
  * A helper class to allow parser exceptions to be thrown anywhere in the code.
  * Should be replaced when no longer required.
  */
 public class RuntimeParserException extends GroovyRuntimeException {
 
-    private static final long serialVersionUID = -6612860527133856587L;
+    @Serial private static final long serialVersionUID = -6612860527133856587L;
 
     public RuntimeParserException(String message, ASTNode node) {
         super(message + "\n", node);
diff --git a/src/main/java/org/codehaus/groovy/syntax/SyntaxException.java 
b/src/main/java/org/codehaus/groovy/syntax/SyntaxException.java
index 5c303ae9cf..1f3e69446c 100644
--- a/src/main/java/org/codehaus/groovy/syntax/SyntaxException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/SyntaxException.java
@@ -21,12 +21,14 @@ package org.codehaus.groovy.syntax;
 import org.codehaus.groovy.GroovyException;
 import org.codehaus.groovy.ast.ASTNode;
 
+import java.io.Serial;
+
 /**
  * Base exception indicating a syntax error.
  */
 public class SyntaxException extends GroovyException {
 
-    private static final long serialVersionUID = 7447641806794047013L;
+    @Serial private static final long serialVersionUID = 7447641806794047013L;
     /** Line upon which the error occurred. */
     private final int startLine;
     private final int endLine;
diff --git a/src/main/java/org/codehaus/groovy/syntax/TokenException.java 
b/src/main/java/org/codehaus/groovy/syntax/TokenException.java
index fea3ec2f04..ead0202164 100644
--- a/src/main/java/org/codehaus/groovy/syntax/TokenException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/TokenException.java
@@ -18,8 +18,10 @@
  */
 package org.codehaus.groovy.syntax;
 
+import java.io.Serial;
+
 public class TokenException extends SyntaxException {
-    private static final long serialVersionUID = 6850594285972085144L;
+    @Serial private static final long serialVersionUID = 6850594285972085144L;
 
     public TokenException(String message, Token token) {
         super(
diff --git 
a/src/main/java/org/codehaus/groovy/syntax/TokenMismatchException.java 
b/src/main/java/org/codehaus/groovy/syntax/TokenMismatchException.java
index 3f799fa929..0a23042348 100644
--- a/src/main/java/org/codehaus/groovy/syntax/TokenMismatchException.java
+++ b/src/main/java/org/codehaus/groovy/syntax/TokenMismatchException.java
@@ -18,8 +18,10 @@
  */
 package org.codehaus.groovy.syntax;
 
+import java.io.Serial;
+
 public class TokenMismatchException extends TokenException {
-    private static final long serialVersionUID = -6321206176010272124L;
+    @Serial private static final long serialVersionUID = -6321206176010272124L;
     private final Token unexpectedToken;
     private final int expectedType;
 
diff --git a/src/main/java/org/codehaus/groovy/tools/gse/StringSetMap.java 
b/src/main/java/org/codehaus/groovy/tools/gse/StringSetMap.java
index 88c7fb5366..1da9716a9f 100644
--- a/src/main/java/org/codehaus/groovy/tools/gse/StringSetMap.java
+++ b/src/main/java/org/codehaus/groovy/tools/gse/StringSetMap.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.tools.gse;
 
+import java.io.Serial;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
 import java.util.Set;
@@ -25,7 +26,7 @@ import java.util.TreeSet;
 
 public class StringSetMap extends LinkedHashMap<String,Set<String>> {
 
-    private static final long serialVersionUID = -8603734698633884431L;
+    @Serial private static final long serialVersionUID = -8603734698633884431L;
 
     public StringSetMap() {
         super();
diff --git 
a/src/main/java/org/codehaus/groovy/transform/tailrec/GotoRecurHereException.java
 
b/src/main/java/org/codehaus/groovy/transform/tailrec/GotoRecurHereException.java
index 54375ca816..a14114bd5d 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/tailrec/GotoRecurHereException.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/tailrec/GotoRecurHereException.java
@@ -18,9 +18,11 @@
  */
 package org.codehaus.groovy.transform.tailrec;
 
+import java.io.Serial;
+
 /**
  * Exception will be thrown by recursive calls in closures and caught in while 
loop to continue to LOOP_LABEL
  */
 public class GotoRecurHereException extends Exception {
-    private static final long serialVersionUID = -193137033604506378L;
+    @Serial private static final long serialVersionUID = -193137033604506378L;
 }
diff --git a/src/main/java/org/codehaus/groovy/util/CharSequenceReader.java 
b/src/main/java/org/codehaus/groovy/util/CharSequenceReader.java
index c4e8cceb65..37afd14d2d 100644
--- a/src/main/java/org/codehaus/groovy/util/CharSequenceReader.java
+++ b/src/main/java/org/codehaus/groovy/util/CharSequenceReader.java
@@ -19,6 +19,7 @@
 package org.codehaus.groovy.util;
 
 import java.io.Reader;
+import java.io.Serial;
 import java.io.Serializable;
 
 /**
@@ -34,7 +35,7 @@ import java.io.Serializable;
  * equivalent directly.
  */
 public class CharSequenceReader extends Reader implements Serializable {
-    private static final long serialVersionUID = -6661279371843310693L;
+    @Serial private static final long serialVersionUID = -6661279371843310693L;
     private final CharSequence charSequence;
     private int idx;
     private int mark;
diff --git a/src/main/java/org/codehaus/groovy/util/FastArray.java 
b/src/main/java/org/codehaus/groovy/util/FastArray.java
index 8ee775a2cb..e1b9cd9f87 100644
--- a/src/main/java/org/codehaus/groovy/util/FastArray.java
+++ b/src/main/java/org/codehaus/groovy/util/FastArray.java
@@ -18,6 +18,7 @@
  */
 package org.codehaus.groovy.util;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.AbstractList;
 import java.util.Collection;
@@ -25,7 +26,7 @@ import java.util.Collections;
 import java.util.List;
 
 public class FastArray implements Cloneable, Serializable {
-    private static final long serialVersionUID = -9143440116071577249L;
+    @Serial private static final long serialVersionUID = -9143440116071577249L;
     public static final FastArray EMPTY_LIST = new FastArray(0);
     private Object[] data;
     public int size;
diff --git a/src/main/java/org/codehaus/groovy/util/LazyReference.java 
b/src/main/java/org/codehaus/groovy/util/LazyReference.java
index bd091ddc5b..fc73382081 100644
--- a/src/main/java/org/codehaus/groovy/util/LazyReference.java
+++ b/src/main/java/org/codehaus/groovy/util/LazyReference.java
@@ -18,17 +18,19 @@
  */
 package org.codehaus.groovy.util;
 
+import java.io.Serial;
+
 /**
  * Soft reference with lazy initialization under lock
  */
 public abstract class LazyReference<T> extends LockableObject {
     private static final ManagedReference INIT = new 
ManagedReference(ReferenceType.HARD,null,null){};
     private static final ManagedReference NULL_REFERENCE = new 
ManagedReference(ReferenceType.HARD,null,null){};
-    private static final long serialVersionUID = -828564509716680325L;
+    @Serial private static final long serialVersionUID = -828564509716680325L;
     private ManagedReference<T> reference = INIT;
     private final ReferenceBundle bundle;
 
-    public LazyReference(ReferenceBundle bundle) { 
+    public LazyReference(ReferenceBundle bundle) {
         this.bundle = bundle;
     }
 
diff --git a/src/main/java/org/codehaus/groovy/util/LockableObject.java 
b/src/main/java/org/codehaus/groovy/util/LockableObject.java
index b5b07a3dc3..a0158cc72e 100644
--- a/src/main/java/org/codehaus/groovy/util/LockableObject.java
+++ b/src/main/java/org/codehaus/groovy/util/LockableObject.java
@@ -18,13 +18,14 @@
  */
 package org.codehaus.groovy.util;
 
+import java.io.Serial;
 import java.util.concurrent.locks.AbstractQueuedSynchronizer;
 
 /**
  * A bit simplified lock designed to be inherited by.
  */
 public class LockableObject extends AbstractQueuedSynchronizer {
-    private static final long serialVersionUID = 2284470475073785118L;
+    @Serial private static final long serialVersionUID = 2284470475073785118L;
     transient Thread owner;
 
     @Override
diff --git 
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/AntProjectPropertiesDelegate.java
 
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/AntProjectPropertiesDelegate.java
index cbb72bf462..8299b7c0b2 100644
--- 
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/AntProjectPropertiesDelegate.java
+++ 
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/AntProjectPropertiesDelegate.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.ant;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import org.apache.tools.ant.Project;
 
+import java.io.Serial;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -31,7 +32,7 @@ public class AntProjectPropertiesDelegate extends 
Hashtable<String, Object> {
 
     private final transient Project project;
 
-    private static final long serialVersionUID = -8311751517184349962L;
+    @Serial private static final long serialVersionUID = -8311751517184349962L;
 
     public AntProjectPropertiesDelegate(Project project) {
         super();
diff --git 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleTextEditor.java
 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleTextEditor.java
index fed406c621..f69125ad4f 100644
--- 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleTextEditor.java
+++ 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/ConsoleTextEditor.java
@@ -53,6 +53,7 @@ import java.awt.event.KeyEvent;
 import java.awt.print.PrinterJob;
 import java.beans.PropertyChangeEvent;
 import java.beans.PropertyChangeListener;
+import java.io.Serial;
 import java.util.prefs.Preferences;
 
 import static java.lang.System.Logger.Level.WARNING;
@@ -62,7 +63,7 @@ import static java.lang.System.Logger.Level.WARNING;
  */
 public class ConsoleTextEditor extends JScrollPane {
     private static final System.Logger LOGGER = 
System.getLogger(ConsoleTextEditor.class.getName());
-    private static final long serialVersionUID = -3582625263676326887L;
+    @Serial private static final long serialVersionUID = -3582625263676326887L;
     private static final Preferences PREFERENCES = 
Preferences.userNodeForPackage(Console.class);
     private static final String PREFERENCE_FONT_SIZE = "fontSize";
     private static final int DEFAULT_FONT_SIZE = 12;
diff --git 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/TextEditor.java
 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/TextEditor.java
index 904b3a9c2a..332c1b5415 100644
--- 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/TextEditor.java
+++ 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/TextEditor.java
@@ -58,6 +58,7 @@ import java.awt.print.Paper;
 import java.awt.print.Printable;
 import java.awt.print.PrinterException;
 import java.awt.print.PrinterJob;
+import java.io.Serial;
 import java.util.Calendar;
 import java.util.regex.Pattern;
 
@@ -65,7 +66,7 @@ import java.util.regex.Pattern;
  * A simple text pane that is printable and wrapping is optional.
  */
 public class TextEditor extends JTextPane implements Pageable, Printable {
-    private static final long serialVersionUID = 8478062945229999402L;
+    @Serial private static final long serialVersionUID = 8478062945229999402L;
 
     public static final String FIND = "Find...";
     public static final String FIND_NEXT = "Find Next";
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqSyntaxError.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqSyntaxError.java
index b2fb3a007f..c3c879e1ae 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqSyntaxError.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/dsl/GinqSyntaxError.java
@@ -20,13 +20,15 @@ package org.apache.groovy.ginq.dsl;
 
 import org.codehaus.groovy.ast.expr.Expression;
 
+import java.io.Serial;
+
 /**
  * Represents GINQ syntax error
  *
  * @since 4.0.0
  */
 public class GinqSyntaxError extends AssertionError {
-    private static final long serialVersionUID = 1106607493949279933L;
+    @Serial private static final long serialVersionUID = 1106607493949279933L;
     private final int line;
     private final int column;
 
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/AbstractBound.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/AbstractBound.java
index 2353b0fdf4..d717d7bf34 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/AbstractBound.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/AbstractBound.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.ginq.provider.collection.runtime;
 
+import java.io.Serial;
 import java.io.Serializable;
 
 /**
@@ -28,7 +29,7 @@ import java.io.Serializable;
  * @since 4.0.0
  */
 abstract class AbstractBound<T1, T2> implements Serializable {
-    private static final long serialVersionUID = 6028167393745578578L;
+    @Serial private static final long serialVersionUID = 6028167393745578578L;
     private final T1 lower;
     private final T2 upper;
 
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/GroupImpl.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/GroupImpl.java
index cdd8055558..f03e35814e 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/GroupImpl.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/GroupImpl.java
@@ -18,6 +18,7 @@
  */
 package org.apache.groovy.ginq.provider.collection.runtime;
 
+import java.io.Serial;
 import java.util.stream.Stream;
 
 /**
@@ -27,7 +28,7 @@ import java.util.stream.Stream;
  * @since 4.0.0
  */
 class GroupImpl<T> extends QueryableCollection<T> implements Group<T> {
-    private static final long serialVersionUID = 5737735821215711785L;
+    @Serial private static final long serialVersionUID = 5737735821215711785L;
 
     GroupImpl(Stream<T> sourceStream) {
         super(sourceStream);
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/PartitionImpl.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/PartitionImpl.java
index 3fae4c924c..fae2ae9a2d 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/PartitionImpl.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/PartitionImpl.java
@@ -18,6 +18,8 @@
  */
 package org.apache.groovy.ginq.provider.collection.runtime;
 
+import java.io.Serial;
+
 /**
  * Represents partition implementation
  *
@@ -25,7 +27,7 @@ package org.apache.groovy.ginq.provider.collection.runtime;
  * @since 4.0.0
  */
 class PartitionImpl<T> extends QueryableCollection<T> implements Partition<T> {
-    private static final long serialVersionUID = -3650144225768070117L;
+    @Serial private static final long serialVersionUID = -3650144225768070117L;
 
     PartitionImpl(Iterable<T> sourceIterable) {
         super(sourceIterable);
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableCollection.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableCollection.java
index efec5d32dd..c0968dea08 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableCollection.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/QueryableCollection.java
@@ -28,6 +28,7 @@ import org.codehaus.groovy.runtime.DefaultGroovyMethods;
 import org.codehaus.groovy.runtime.dgmimpl.NumberNumberMinus;
 import org.codehaus.groovy.runtime.typehandling.NumberMath;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -135,7 +136,7 @@ class QueryableCollection<T> implements Queryable<T>, 
Serializable {
     }
 
     private static final class Bucket<E> extends ArrayList<E> {
-        private static final long serialVersionUID = 2813676753531316403L;
+        @Serial private static final long serialVersionUID = 
2813676753531316403L;
         Bucket(int initialCapacity) {
             super(initialCapacity);
         }
@@ -802,5 +803,5 @@ class QueryableCollection<T> implements Queryable<T>, 
Serializable {
     private static final String PARALLEL = "parallel";
     private static final String TRUE_STR = "true";
     private static final String FALSE_STR = "false";
-    private static final long serialVersionUID = -5067092453136522893L;
+    @Serial private static final long serialVersionUID = -5067092453136522893L;
 }
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/RowBound.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/RowBound.java
index 8fa8a7d602..b60d955bae 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/RowBound.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/RowBound.java
@@ -18,13 +18,15 @@
  */
 package org.apache.groovy.ginq.provider.collection.runtime;
 
+import java.io.Serial;
+
 /**
  * Represents row bounds of window frame
  *
  * @since 4.0.0
  */
 public class RowBound extends AbstractBound<Long, Long> {
-    private static final long serialVersionUID = 5774234311203836615L;
+    @Serial private static final long serialVersionUID = 5774234311203836615L;
     public static final RowBound DEFAULT = new RowBound(Long.MIN_VALUE, 
Long.MAX_VALUE);
 
     /**
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/ValueBound.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/ValueBound.java
index e981499270..6f10617c08 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/ValueBound.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/ValueBound.java
@@ -18,13 +18,15 @@
  */
 package org.apache.groovy.ginq.provider.collection.runtime;
 
+import java.io.Serial;
+
 /**
  * Represents value bounds of window frame
  *
  * @since 4.0.0
  */
 public class ValueBound<U extends Comparable<? super U>> extends 
AbstractBound<U, U> {
-    private static final long serialVersionUID = -8240086260919353012L;
+    @Serial private static final long serialVersionUID = -8240086260919353012L;
 
     /**
      * Construct a new ValueBound instance with lower and upper frame bounds
diff --git 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowImpl.java
 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowImpl.java
index 480c625d51..1de6912c76 100644
--- 
a/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowImpl.java
+++ 
b/subprojects/groovy-ginq/src/main/groovy/org/apache/groovy/ginq/provider/collection/runtime/WindowImpl.java
@@ -21,6 +21,7 @@ package org.apache.groovy.ginq.provider.collection.runtime;
 import groovy.lang.Tuple2;
 import org.apache.groovy.util.ReversedList;
 
+import java.io.Serial;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.Comparator;
@@ -287,5 +288,5 @@ class WindowImpl<T, U extends Comparable<? super U>> 
extends QueryableCollection
     private final List<T> list;
     private static final BigDecimal MIN_VALUE = toBigDecimal(Long.MIN_VALUE);
     private static final BigDecimal MAX_VALUE = toBigDecimal(Long.MAX_VALUE);
-    private static final long serialVersionUID = -3458969297047398621L;
+    @Serial private static final long serialVersionUID = -3458969297047398621L;
 }
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateExecutionException.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateExecutionException.java
index a5701e4e2e..1ce932acd0 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateExecutionException.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateExecutionException.java
@@ -18,11 +18,13 @@
  */
 package groovy.text;
 
+import java.io.Serial;
+
 /**
  * A custom exception class to flag template execution errors
  */
 public class TemplateExecutionException extends Exception  {
-    private static final long serialVersionUID = 3940987189684210921L;
+    @Serial private static final long serialVersionUID = 3940987189684210921L;
     private final int lineNumber;
 
     public TemplateExecutionException(int lineNumber) {
diff --git 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateParseException.java
 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateParseException.java
index 98e7d42a7f..7805ce294f 100644
--- 
a/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateParseException.java
+++ 
b/subprojects/groovy-templates/src/main/groovy/groovy/text/TemplateParseException.java
@@ -18,11 +18,13 @@
  */
 package groovy.text;
 
+import java.io.Serial;
+
 /**
  * A custom exception class to flag template parsing errors
  */
 public class TemplateParseException extends RuntimeException {
-    private static final long serialVersionUID = 1607958968337123274L;
+    @Serial private static final long serialVersionUID = 1607958968337123274L;
     private final int lineNumber;
     private final int column;
 

Reply via email to