writeProperty( virtualElement, null, propDefn.getName( ), cdata );
if ( propDefn.getTypeCode( ) == PropertyType.STRUCT_TYPE ) { if ( propDefn.isList( ) ) writeStructureList( virtualElement, propDefn.getName( ) ); else writeStructure( virtualElement, propDefn.getName( ) ); } else writeProperty( virtualElement, null, propDefn.getName( ), cdata );
	protected void writeOverridenPropertyValues( DesignElement obj )	{		// if no extends do not write this part.		if ( obj.getExtendsElement( ) == null )			return;		writer				.conditionalStartElement( DesignSchemaConstants.OVERRIDDEN_VALUES_TAG );		Iterator iter = new ContentIterator( obj );		while ( iter.hasNext( ) ) // for each virtual element in the child		{			DesignElement virtualElement = (DesignElement) iter.next( );			if ( !virtualElement.hasLocalPropertyValues( )					&& virtualElement.getStyle( ) == null					&& StringUtil.isBlank( virtualElement.getName( ) ) )				continue;			writer					.conditionalStartElement( DesignSchemaConstants.REF_ENTRY_TAG );			long baseId = virtualElement.getBaseId( );			writer.attribute( DesignSchemaConstants.BASE_ID_ATTRIB, new Long(					baseId ).toString( ) );			writer.attribute( DesignSchemaConstants.NAME_ATTRIB, virtualElement					.getName( ) );			assert virtualElement.getExtendsElement( ) == null;			List propDefns = virtualElement.getPropertyDefns( );			for ( int i = 0; i < propDefns.size( ); i++ )			{				PropertyDefn propDefn = (PropertyDefn) propDefns.get( i );				if ( DesignElement.NAME_PROP.equalsIgnoreCase( propDefn						.getName( ) ) )					continue;				boolean cdata = false;				if ( propDefn.getTypeCode( ) == PropertyType.SCRIPT_TYPE )					cdata = true;				writeProperty( virtualElement, null, propDefn.getName( ), cdata );			}			writer.endElement( ); // end ref-entry		}		writer.endElement( ); // end Overridden-values	}