Package: org.codehaus.groovy.classgen

## [Java] Class AnnotationVisitor

- org.codehaus.groovy.classgen.AnnotationVisitor

- An Annotation visitor responsible for:

  - reading annotation metadata (@Retention, @Target, attribute types)
  - verify that an `AnnotationNode` conforms to annotation meta
  - enhancing an `AnnotationNode` AST to reflect real annotation meta

- - ### Constructor Summary

    Constructors
    Constructor and description
    `AnnotationVisitor (SourceUnit source, ErrorCollector errorCollector)`

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `protected void` | `addError(String msg)`
    `` | `protected void` | `addError(String msg, ASTNode expr)`
    `` | `void` | `checkCircularReference(ClassNode searchClass, ClassNode attrType, Expression startExp)`
    `` | `void` | `checkReturnType(ClassNode attrType, ASTNode node)`
    `` | `void` | `setReportClass(ClassNode cn)`
    `` | `AnnotationNode` | `visit(AnnotationNode node)`
    `` | `protected void` | `visitAnnotationExpression(String attrName, AnnotationConstantExpression expression, ClassNode attrType)` @param attrName the name
    `` | `protected void` | `visitConstantExpression(String attrName, ConstantExpression constExpr, ClassNode attrType)`
    `` | `protected void` | `visitEnumExpression(String attrName, PropertyExpression propExpr, ClassNode attrType)`
    `` | `protected void` | `visitExpression(String attrName, Expression attrExp, ClassNode attrType)`
    `` | `protected void` | `visitListExpression(String attrName, ListExpression listExpr, ClassNode elementType)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, toString, hashCode, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### public AnnotationVisitor(SourceUnit source, ErrorCollector errorCollector)

  - ### Method Detail

    - #### protected void addError(String msg)

    - #### protected void addError(String msg, ASTNode expr)

    - #### public void checkCircularReference(ClassNode searchClass, ClassNode attrType, Expression startExp)

    - #### public void checkReturnType(ClassNode attrType, ASTNode node)

    - #### public void setReportClass(ClassNode cn)

    - #### public AnnotationNode visit(AnnotationNode node)

    - #### protected void visitAnnotationExpression(String attrName, AnnotationConstantExpression expression, ClassNode attrType)

      Parameters:
        `attrName` - the name
        `expression` - the expression
        `attrType` - the type

    - #### protected void visitConstantExpression(String attrName, ConstantExpression constExpr, ClassNode attrType)

    - #### protected void visitEnumExpression(String attrName, PropertyExpression propExpr, ClassNode attrType)

    - #### protected void visitExpression(String attrName, Expression attrExp, ClassNode attrType)

    - #### protected void visitListExpression(String attrName, ListExpression listExpr, ClassNode elementType)