<s> package org . eclipse . jdt . core . dom ; public abstract class StructuralPropertyDescriptor { private final String propertyId ; private final Class nodeClass ; StructuralPropertyDescriptor ( Class nodeClass , String propertyId ) { if ( nodeClass == null || propertyId == null ) { throw new IllegalArgumentException ( ) ; } this . propertyId = propertyId ; this . nodeClass = nodeClass ; } public final String getId ( ) { return this . propertyId ; } public final Class getNodeClass ( ) { return this . nodeClass ; } public final boolean isSimpleProperty ( ) { return ( this instanceof SimplePropertyDescriptor ) ; } public final boolean isChildProperty ( ) { return ( this instanceof ChildPropertyDescriptor ) ; } public final boolean isChildListProperty ( ) { return ( this instanceof ChildListPropertyDescriptor ) ; } public String toString ( ) { StringBuffer b = new StringBuffer ( ) ; if ( isChildListProperty ( ) ) { b . append ( "ChildList" ) ; } if ( isChildProperty ( ) ) { b . append ( "Child" ) ; } if ( isSimpleProperty ( ) ) { b . append ( "Simple" ) ; } b . append ( "Property[" ) ; if ( this . nodeClass != null ) { b . append ( this . nodeClass . getName ( ) ) ; } b . append ( "," ) ; if ( this . propertyId != null ) { b . append ( this . propertyId ) ; } b . append ( "]" ) ; return b . toString ( ) ; } } </s>