<s> package org . eclipse . jdt . core . dom ; public abstract class Annotation extends Expression implements IExtendedModifier { abstract ChildPropertyDescriptor internalTypeNameProperty ( ) ; public final ChildPropertyDescriptor getTypeNameProperty ( ) { return internalTypeNameProperty ( ) ; } static final ChildPropertyDescriptor internalTypeNamePropertyFactory ( Class nodeClass ) { return new ChildPropertyDescriptor ( nodeClass , "typeName" , Name . class , MANDATORY , NO_CYCLE_RISK ) ; } Name typeName = null ; Annotation ( AST ast ) { super ( ast ) ; } public boolean isModifier ( ) { return false ; } public boolean isAnnotation ( ) { return true ; } public Name getTypeName ( ) { if ( this . typeName == null ) { synchronized ( this ) { if ( this . typeName == null ) { preLazyInit ( ) ; this . typeName = new SimpleName ( this . ast ) ; postLazyInit ( this . typeName , internalTypeNameProperty ( ) ) ; } } } return this . typeName ; } public void setTypeName ( Name typeName ) { if ( typeName == null ) { throw new IllegalArgumentException ( ) ; } ChildPropertyDescriptor p = internalTypeNameProperty ( ) ; ASTNode oldChild = this . typeName ; preReplaceChild ( oldChild , typeName , p ) ; this . typeName = typeName ; postReplaceChild ( oldChild , typeName , p ) ; } public boolean isNormalAnnotation ( ) { return ( this instanceof NormalAnnotation ) ; } public boolean isMarkerAnnotation ( ) { return ( this instanceof MarkerAnnotation ) ; } public boolean isSingleMemberAnnotation ( ) { return ( this instanceof SingleMemberAnnotation ) ; } int memSize ( ) { return BASE_NODE_SIZE + 1 * 4 ; } public IAnnotationBinding resolveAnnotationBinding ( ) { return this . ast . getBindingResolver ( ) . resolveAnnotation ( this ) ; } } </s>