This document discusses various metaprogramming techniques in Groovy including:
- Meta Object Protocol (MOP) which allows modifying classes at runtime.
- Categories and mixins for adding methods to existing classes.
- Traits for reusable pieces of code with state.
- Extension modules for globally available extensions that can modify classes.
- AST transformations for compile-time modifications by transforming the AST.
- Over 70 built-in AST transformations like @ToString and @Immutable.