Package: groovy.transform.builder

## [Java] Class BuilderASTStubber

- groovy.transform.builder.BuilderASTStubber

-     public class BuilderASTStubber
      extends AbstractASTTransformation

  Joint-compilation stubber for Builder, covering the two most common shapes:

  - DefaultStrategy on a class-level annotation: emits the inner builder class with fluent setters and a `build()` method, plus a static `Foo.builder()` factory on the buildee.
  - SimpleStrategy with a non-default `prefix`: emits chained `Foo prefixName(T value)` setters on the buildee itself. Skipped silently for the default `prefix = "set"` because the stubber's `Foo setX(value)` would clash with the void `setX(value)` that the stub generator's Verifier sub-pass also emits for properties — Java doesn't allow two methods with the same name and parameters but different return types.

  Other strategies are out of scope for this spike pass:

  - InitializerStrategy — typed-builder pattern with generic parameters; structurally larger than the spike's scope.
  - ExternalStrategy — annotates an explicit builder class rather than the buildee; the stubber would fire on the explicit builder, with no impact on the buildee's stub.

  Method/constructor targets, the `forClass` attribute, and `includeSuperProperties` are also out of scope. The stubber walks directly-declared properties only, mirroring the same Tier 1 limitation other property-walking stubbers carry.

  Since:
    6.0.0

- - Inherited fields
    Fields inherited from class | Fields
    --- | ---
    `class AbstractASTTransformation` | `RETENTION_CLASSNODE, sourceUnit`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public void` | `visit(ASTNode[] nodes, SourceUnit source)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class AbstractASTTransformation` | `addError, checkIncludeExcludeUndefinedAware, checkIncludeExcludeUndefinedAware, checkNotInterface, checkPropertyList, checkPropertyList, checkPropertyList, copyAnnotatedNodeAnnotations, copyAnnotatedNodeAnnotations, deemedInternal, deemedInternalName, getAnnotationName, getMemberClassList, getMemberClassValue, getMemberClassValue, getMemberIntValue, getMemberStringList, getMemberStringValue, getMemberStringValue, getMemberValue, hasAnnotation, init, markAsInternal, memberHasValue, shouldSkip, shouldSkip, shouldSkip, shouldSkipOnDescriptorUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, shouldSkipUndefinedAware, tokenize`

- - ### Method Detail

    - #### public void visit(ASTNode[] nodes, SourceUnit source)