@Documented
 @Retention(value=RUNTIME)
 @Target(value={TYPE,CONSTRUCTOR,METHOD})
public @interface Builder
@Builder AST transformation is used to help write classes that can be created using fluent api calls.
 The transform supports multiple building strategies to cover a range of cases and there are a number
 of configuration options to customize the building process.
 In addition, a number of annotation attributes let you customise the building process. Not all annotation attributes
 are supported by all strategies. See the individual strategy documentation for more details.
 If you're an AST hacker, you can also define your own strategy class.
 The following strategies are bundled with Groovy:
 SimpleStrategy for creating chained settersExternalStrategy where you annotate an explicit builder class while leaving some buildee class being built untouchedDefaultStrategy which creates a nested helper class for instance creationInitializerStrategy which creates a nested helper class for instance creation which when used with @CompileStatic allows type-safe object creationnew Person(firstName: "Robert", lastName: "Lewandowski", age: 21)or the with statement:
 new Person().with {
     firstName = "Robert"
     lastName = "Lewandowski"
     age = 21
 }
 
 so you might not find value in using the builder transform at all. But if you need Java integration or in some cases improved type safety, the @Builder transform might prove very useful.SimpleStrategy, 
ExternalStrategy, 
DefaultStrategy, 
InitializerStrategy| Modifier and Type | Optional Element and Description | 
|---|---|
| boolean | allNamesWhether the generated builder should support all properties, including those with names that are considered internal. | 
| boolean | allPropertiesWhether to include all properties (as per the JavaBean spec) in the generated builder. | 
| java.lang.String | builderClassNameFor strategies which create a builder helper class, the class name to use for the helper class. | 
| java.lang.String | builderMethodNameThe method name to use for a builder factory method in the source class for easy access of the
 builder helper class for strategies which create such a helper class. | 
| java.lang.Class<? extends BuilderASTTransformation.BuilderStrategy> | builderStrategyA class capturing the builder strategy | 
| java.lang.String | buildMethodNameFor strategies which create a builder helper class that creates the instance, the method name to call to create the instance. | 
| java.lang.String[] | excludesList of field and/or property names to exclude from generated builder methods. | 
| boolean | forceWhether to always include helper constructors. | 
| java.lang.Class | forClassA class for which builder methods should be created. | 
| java.lang.String[] | includesList of field and/or property names to include within the generated builder methods. | 
| boolean | includeSuperPropertiesGenerate builder methods for properties from super classes. | 
| java.lang.String | prefixThe prefix to use when creating the setter methods. | 
| boolean | useSettersBy default, properties are set directly using their respective field. | 
public abstract java.lang.Class forClass
public abstract java.lang.Class<? extends BuilderASTTransformation.BuilderStrategy> builderStrategy
public abstract java.lang.String prefix
public abstract java.lang.String builderClassName
forClass since in such cases the builder class is explicitly supplied.
 Default is determined by the strategy, e.g. TargetClass + "Builder" or TargetClass + "Initializer".public abstract java.lang.String buildMethodName
public abstract java.lang.String builderMethodName
forClass.
 Default is determined by the strategy, e.g. builder or createInitializer.public abstract java.lang.String[] excludes
public abstract java.lang.String[] includes
public abstract boolean useSetters
useSetters=true then a writable property will be set using its setter.
 If turning on this flag we recommend that setters that might be called are
 made null-safe wrt the parameter.public abstract boolean includeSuperProperties
public abstract boolean allNames
public abstract boolean allProperties
@Builder generated classes. Groovy also treats any explicitly created getXxx() or isYyy()
 methods as property getters as per the JavaBean specification. Old versions of Groovy did not.
 So set this flag to false for the old behavior or if you want to explicitly exclude such properties.
 Currently only supported by DefaultStrategy and ExternalStrategy.public abstract boolean force
@TupleConstructor
 annotations are present. If such annotations are present, it is assumed they will provide the helper constructor
 that this strategy needs. If made true, the helper constructor will be generated and it is up to you to make sure
 this doesn't conflict with any other generated constructors.