<s> package org . eclipse . jdt . core . dom ; import java . util . ArrayList ; import java . util . List ; public class UnionType extends Type { public static final ChildListPropertyDescriptor TYPES_PROPERTY = new ChildListPropertyDescriptor ( UnionType . class , "types" , Type . class , CYCLE_RISK ) ; private static final List PROPERTY_DESCRIPTORS ; static { List propertyList = new ArrayList ( 2 ) ; createPropertyList ( UnionType . class , propertyList ) ; addProperty ( TYPES_PROPERTY , propertyList ) ; PROPERTY_DESCRIPTORS = reapPropertyList ( propertyList ) ; } public static List propertyDescriptors ( int apiLevel ) { return PROPERTY_DESCRIPTORS ; } private ASTNode . NodeList types = new ASTNode . NodeList ( TYPES_PROPERTY ) ; UnionType ( AST ast ) { super ( ast ) ; unsupportedIn2_3 ( ) ; } final List internalStructuralPropertiesForType ( int apiLevel ) { return propertyDescriptors ( apiLevel ) ; } final List internalGetChildListProperty ( ChildListPropertyDescriptor property ) { if ( property == TYPES_PROPERTY ) { return types ( ) ; } return super . internalGetChildListProperty ( property ) ; } final int getNodeType0 ( ) { return UNION_TYPE ; } ASTNode clone0 ( AST target ) { UnionType result = new UnionType ( target ) ; result . setSourceRange ( getStartPosition ( ) , getLength ( ) ) ; result . types ( ) . addAll ( ASTNode . copySubtrees ( target , types ( ) ) ) ; return result ; } final boolean subtreeMatch0 ( ASTMatcher matcher , Object other ) { return matcher . match ( this , other ) ; } void accept0 ( ASTVisitor visitor ) { boolean visitChildren = visitor . visit ( this ) ; if ( visitChildren ) { acceptChildren ( visitor , this . types ) ; } visitor . endVisit ( this ) ; } public List types ( ) { return this . types ; } int memSize ( ) { return BASE_NODE_SIZE + 1 * 4 ; } int treeSize ( ) { return memSize ( ) + this . types . listSize ( ) ; } } </s>