<s> package org . eclipse . jdt . core . dom ; import java . util . List ; public abstract class AbstractTypeDeclaration extends BodyDeclaration { SimpleName typeName = null ; ASTNode . NodeList bodyDeclarations ; abstract ChildListPropertyDescriptor internalBodyDeclarationsProperty ( ) ; public final ChildListPropertyDescriptor getBodyDeclarationsProperty ( ) { return internalBodyDeclarationsProperty ( ) ; } abstract ChildPropertyDescriptor internalNameProperty ( ) ; public final ChildPropertyDescriptor getNameProperty ( ) { return internalNameProperty ( ) ; } static final ChildListPropertyDescriptor internalBodyDeclarationPropertyFactory ( Class nodeClass ) { return new ChildListPropertyDescriptor ( nodeClass , "" , BodyDeclaration . class , CYCLE_RISK ) ; } static final ChildPropertyDescriptor internalNamePropertyFactory ( Class nodeClass ) { return new ChildPropertyDescriptor ( nodeClass , "name" , SimpleName . class , MANDATORY , NO_CYCLE_RISK ) ; } AbstractTypeDeclaration ( AST ast ) { super ( ast ) ; this . bodyDeclarations = new ASTNode . NodeList ( internalBodyDeclarationsProperty ( ) ) ; } public SimpleName getName ( ) { if ( this . typeName == null ) { synchronized ( this ) { if ( this . typeName == null ) { preLazyInit ( ) ; this . typeName = new SimpleName ( this . ast ) ; postLazyInit ( this . typeName , internalNameProperty ( ) ) ; } } } return this . typeName ; } public void setName ( SimpleName typeName ) { if ( typeName == null ) { throw new IllegalArgumentException ( ) ; } ChildPropertyDescriptor p = internalNameProperty ( ) ; ASTNode oldChild = this . typeName ; preReplaceChild ( oldChild , typeName , p ) ; this . typeName = typeName ; postReplaceChild ( oldChild , typeName , p ) ; } public List bodyDeclarations ( ) { return this . bodyDeclarations ; } public boolean isPackageMemberTypeDeclaration ( ) { ASTNode parent = getParent ( ) ; return ( parent instanceof CompilationUnit ) ; } public boolean isMemberTypeDeclaration ( ) { ASTNode parent = getParent ( ) ; return ( parent instanceof AbstractTypeDeclaration ) || ( parent instanceof AnonymousClassDeclaration ) ; } public boolean isLocalTypeDeclaration ( ) { ASTNode parent = getParent ( ) ; return ( parent instanceof TypeDeclarationStatement ) ; } public final ITypeBinding resolveBinding ( ) { return internalResolveBinding ( ) ; } abstract ITypeBinding internalResolveBinding ( ) ; int memSize ( ) { return super . memSize ( ) + 2 * 4 ; } } </s>