if ( memberDefn.getTypeCode( ) == IPropertyType.STRUCT_TYPE ) { if ( memberDefn.isList( ) ) writeStructureList( struct, memberDefn.getName( ) ); else writeStructure( struct, memberDefn.getName( ) ); } else property( struct, memberDefn.getName( ) );
writeMember( struct, memberDefn );
	protected void writeStructureList( DesignElement obj, String propName )	{		PropertyDefn prop = (ElementPropertyDefn) obj.getDefn( ).getProperty(				propName );		assert prop != null;		assert prop.getTypeCode( ) == IPropertyType.STRUCT_TYPE				&& prop.isList( );		List list = (List) obj.getLocalProperty( getModule( ), propName );		if ( list == null || list.size( ) == 0 )			return;		writer.startElement( DesignSchemaConstants.LIST_PROPERTY_TAG );		writer.attribute( DesignSchemaConstants.NAME_ATTRIB, propName );		Iterator iter = list.iterator( );		while ( iter.hasNext( ) )		{			IStructure struct = (IStructure) iter.next( );			writer.startElement( DesignSchemaConstants.STRUCTURE_TAG );			Iterator memberIter = prop.getStructDefn( ).propertiesIterator( );			while ( memberIter.hasNext( ) )			{				PropertyDefn memberDefn = (PropertyDefn) memberIter.next( );				// the member of the structure list may be the				// structure/structure list again.								if ( memberDefn.getTypeCode( ) == IPropertyType.STRUCT_TYPE )				{					if ( memberDefn.isList( ) )						writeStructureList( struct, memberDefn.getName( ) );					else						writeStructure( struct, memberDefn.getName( ) );				}				else					property( struct, memberDefn.getName( ) );			}			writer.endElement( );		}		writer.endElement( );	}