# Package groovy.transform

Interface Summary
CompilationUnitAware: This interface is for AST transformations which must be aware of the compilation unit where they are applied.

Class Summary
Undefined: Java doesn't allow you to have null as an attribute value.
Undefined.CLASS

Enum Summary
AutoCloneStyle: Intended style to use for cloning when using the `@`AutoClone annotation.
PackageScopeTarget: Intended target when `@`PackageScope is placed at the class level.
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".

Annotation Types Summary
AnnotationCollector: The AnnotationCollector can be used to define aliases for groups of annotations.
ASTTest: This AST transformation aims at helping in debugging other AST transformations.
AutoClone: Class annotation used to assist in the creation of `Cloneable` classes.
BaseScript: Variable annotation used for changing the base script class of the current script.
Canonical: Class annotation used to assist in the creation of mutable classes.
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.
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.
Immutable: 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 sub class.
Memoized: Method annotation that creates a cache for the results of the execution of the annotated method.
NotYetImplemented: Method annotation used to invert test case results.
PackageScope: Annotation used for turning off Groovy's auto visibility conventions.
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 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.
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.
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.