Groovy AST transformations, such as @ValueObject and @NonNull, which makes constructing an instance more bullet-proof.