# Package groovy.transform

package groovy.transform
Compile-time AST transformations for code generation and type checking.

Key annotations: `@CompileStatic` (static compilation), `@TypeChecked` (type checking), `@ToString`, `@EqualsAndHashCode`, `@Immutable`, `@TupleConstructor`, `@Lazy`, `@Synchronized`, and many others for traits, records, sealing, and property handling.

Related subpackages: `groovy.transform.builder` (builder patterns), `groovy.transform.options` (property customization), `groovy.transform.stc` (type checking hints).

- Related Packages
  Package
  Description
  groovy.transform.builder
  Builder pattern generation via AST transformation.
  groovy.transform.options
  Customizable property handlers for transform-related property processing.
  groovy.transform.stc
  Static type checking support with closure signature hints and validation.
- Class
  Description
  ActiveMethod
  Marks a method within an `ActiveObject` class for actor-backed execution.
  ActiveObject
  Marks a class as an active object whose `ActiveMethod`-annotated methods are automatically routed through an internal actor for thread-safe, serialized execution.
  AnnotationCollector
  The AnnotationCollector can be used to define aliases for annotations and attributes.
  AnnotationCollectorMode
  Conflict resolution modes for `AnnotationCollector`.
  Associative
  Declares that a two-argument combining method is associative: `combine(a, combine(b, c))` produces the same result as `combine(combine(a, b), c)` for all inputs.
  ASTTest
  This AST transformation aims at helping in debugging other AST transformations.
  AutoClone
  Class annotation used to assist in the creation of `Cloneable` classes.
  AutoCloneStyle
  Intended style to use for cloning when using the `@`AutoClone annotation.
  AutoFinal
  Annotation to automatically add the final qualifier to method, constructor, and closure parameters.
  AutoImplement
  Class annotation used to provide default dummy methods for a class extending an abstract super class or implementing one or more interfaces.
  BaseScript
  Variable annotation used for changing the base script class of the current script.
  CompilationUnitAware
  This interface is for AST transformations which must be aware of the compilation unit where they are applied.
  CompileStatic
  This will let the Groovy compiler use compile time checks in the style of Java then perform static compilation, thus bypassing the Groovy meta object protocol.
  DefaultsMode
  Intended mode to use when generating constructors to emulate default parameter values when using the `TupleConstructor` annotation.
  EqualsAndHashCode
  Class annotation used to assist in creating appropriate `equals()` and `hashCode()` methods.
  ExternalizeMethods
  Class annotation used to assist in the creation of `Externalizable` classes.
  ExternalizeVerifier
  Class annotation used to assist in the creation of `Externalizable` classes.
  Field
  Variable annotation used for changing the scope of a variable within a script from being within the run method of the script to being at the class level for the script.
  Final
  Annotation to add the final modifier to classes, methods, constructors, and fields.
  Generated
  Marks class members that have been generated by the compiler.
  ImmutableBase
  Class annotation used to assist in the creation of immutable classes.
  ImmutableOptions
  Class annotation used to assist in the creation of immutable classes.
  IndexedProperty
  Field annotation used with properties to provide an indexed getter and setter for the property.
  InheritConstructors
  Class annotation to make constructors from a super class available in a subclass.
  Internal
  Marks class members that are intended for internal use.
  KnownImmutable
  Class annotation used as a marker for immutable classes.
  MapConstructor
  Class annotation used to assist in the creation of map constructors in classes.
  Memoized
  Method annotation that creates a cache for the results of the execution of the annotated method.
  Monadic
  Marks a type as participating in monadic comprehensions (the `DO` macro).
  NamedDelegate
  Marker interface used to indicate that the property names of the annotated parameter represent valid key names when using named arguments and that the property types are applicable for type checking purposes.
  NamedParam
  Marker interface used to indicate that the name of the annotated parameter (or specified optional name) is a valid key name when using named arguments and that the parameter type is applicable for type checking purposes.
  NamedParams
  Collector annotation for `NamedParam`.
  NamedVariant
  Allows construction of a named-arg equivalent method or constructor.
  NonSealed
  Class annotation used to demarcate non-sealed classes.
  NullCheck
  Class, method or constructor annotation which indicates that each parameter should be checked to ensure it isn't null.
  OperatorRename
  Allows renaming of Groovy's operator methods.
  PackageScope
  Annotation used for turning off Groovy's auto visibility conventions.
  PackageScopeTarget
  Intended target when `@`PackageScope is placed at the class level.
  PackedClosures
  Opt-in for compact closure compilation: within the annotated class or method, an eligible closure literal's body is hoisted into a synthetic method on the enclosing class and the literal is replaced by a shared `PackedClosure` adapter, instead of generating one inner class per closure.
  PackedClosures.PackMode
  The packing behaviour of a `PackedClosures` scope.
  Parallel
  Runs each iteration of an annotated `for` loop in parallel using the current pool or default executor, with structured completion.
  PropertyOptions
  Marker annotation used to indicate that special property handling code will be generated for this class.
  Pure
  Marks the return value of "pure" method only comes from expressions involving constants or other pure methods.
  RecordBase
  Class annotation used to assist in the creation of record-like classes.
  RecordOptions
  Class annotation used to assist in the creation of record-like classes.
  RecordTypeMode
  Intended mode to use for records when using the `@RecordType` annotation (or `record` keyword).
  Reducer
  Declares that a two-argument combining method is associative and has an identity element — together, the algebraic contract a seeded parallel reduction relies on.
  SafeRegex
  Guards the regex operators within the annotated scope against Regular Expression Denial of Service (ReDoS).
  Sealed
  Class annotation used to assist in the creation of sealed classes.
  SealedMode
  Intended mode to use for sealed classes when using the `@Sealed` annotation (or `sealed` keyword).
  SealedOptions
  Class annotation used to assist in the creation of sealed classes.
  SelfType
  This annotation can be added on a trait to declare the list of types that a class implementing that trait is supposed to extend.
  Sortable
  A class annotation used to make a class Comparable by (potentially) multiple Comparators.
  SourceURI
  Variable annotation used for getting the URI of the current script.
  Synchronized
  Method annotation to make a method call synchronized for concurrency handling with some useful baked-in conventions.
  TailRecursive
  Method annotation used to transform methods with tail recursive calls into iterative methods automagically since the JVM cannot do this itself.
  ToString
  Class annotation used to assist in the creation of `toString()` methods in classes.
  Trait
  Used to mark a class as being a trait.
  TupleConstructor
  Class annotation used to assist in the creation of tuple constructors in classes.
  TypeChecked
  This will let the Groovy compiler use compile time checks in the style of Java.
  TypeChecked.TypeCheckingInfo
  This annotation is added by @TypeChecked on methods which have type checking turned on.
  TypeCheckingMode
  This enumeration can be used whenever it is preferred to annotate a class as `TypeChecked` in general, but where only one or more methods are "dynamic".
  Undefined
  Java doesn't allow you to have null as an attribute value.
  Undefined.CLASS
  Sentinel type used when an annotation member has no explicit class value.
  Undefined.EXCEPTION
  Sentinel exception type used when an annotation member has no explicit exception value.
  Virtual
  Marks a public trait `static` method as virtual: trait-body calls to this method dispatch through the implementing class at runtime, so a same-signature static method declared on the implementing class overrides the trait's default.
  VisibilityOptions
  Marker annotation used in the context of AST transformations to provide a custom visibility.
  WithReadLock
  This annotation is used in conjunction with `WithWriteLock` to support read and write synchronization on a method.
  WithWriteLock
  This annotation is used in conjunction with `WithReadLock` to support read and write synchronization on a method.