# Package groovy.transform

##

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

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

- Enum Summary
  Enum | Description
  --- | ---
  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 Type Summary
  Annotation Type | Description
  --- | ---
  ASTTest | This AST transformation aims at helping in debugging other AST transformations.
  AnnotationCollector | The AnnotationCollector can be used to define aliases for groups of annotations.
  AutoClone | Class annotation used to assist in the creation of `Cloneable` classes.
  AutoExternalize | Class annotation used to assist in the creation of `Externalizable` 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.
  CompileDynamic | An annotation which is just a shortcut for @CompileStatic(TypeCheckingMode.SKIP).
  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.
  ConditionalInterrupt | Allows "interrupt-safe" executions of scripts by adding a custom check for interruption into loops (for, while, ...) and at the start of closures and methods.
  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 | Class, method or field annotation used for turning off Groovy's auto visibility conventions.
  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.
  TailRecursive | Class annotation used to transform method with tail recursive calls into iterative methods automagically since the JVM cannot do this itself.
  ThreadInterrupt | Allows "interrupt-safe" executions of scripts by adding Thread.currentThread().isInterrupted() checks into loops (for, while) and at the start of closures and methods.
  TimedInterrupt | Allows safe timed executions of scripts by adding elapsed time checks into loops (for, while) and at the start of closures and methods and throwing an exception if a timeout occurs.
  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.