Package: org.codehaus.groovy.transform

## [Java] Class SingletonASTStubber

- org.codehaus.groovy.transform.SingletonASTStubber

-     @GroovyASTTransformation(phase = CompilePhase.CONVERSION)
      public class SingletonASTStubber
      extends AbstractASTTransformation

  Joint-compilation stubber for Singleton. Emits the public static `getInstance()` method (or `getXxx()` for a custom property name) so Java consumers can call `MyClass.getInstance()` against the joint-compilation stub.

  The placeholder body returns `null`; the full SingletonASTTransformation at CANONICALIZATION recognises the stubber metadata and replaces the body with the real implementation (which dereferences the singleton field, optionally with double-checked locking when `lazy = true`).

  The corresponding singleton field is intentionally not emitted from the stubber. For the default `lazy = false` configuration the runtime field is public static final and Java callers could read it directly; emitting it here would risk a duplicate-add at CANONICALIZATION, and the `getInstance()` accessor is the canonical Java idiom. Adding the field could be a follow-up if the spike's experience suggests Java consumers commonly want field-level access.

  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)