case PropertyType.XML_TYPE :
case IPropertyType.XML_TYPE :
	public void visitExtendedItem( ExtendedItem obj )	{        // provide bound column compatibility		boundColumnsMgr.dealExtendedItem( obj, getModule( ) );				writer.startElement( DesignSchemaConstants.EXTENDED_ITEM_TAG );				ExtensionElementDefn extDefn = obj.getExtDefn( );		if ( extDefn == null )		{			attribute( obj, DesignSchemaConstants.EXTENSION_NAME_ATTRIB,					ExtendedItem.EXTENSION_NAME_PROP );			super.visitExtendedItem( obj );			resourceKey( obj, ExtendedItem.ALT_TEXT_KEY_PROP,					ExtendedItem.ALT_TEXT_PROP );			// write filter properties for the extended item			writeStructureList( obj, ExtendedItem.FILTER_PROP );			// write other un-organized strings			ContentTree tree = obj.getContentTree( );			writeContentTree( tree );		}		else		{			// write some attributes			attribute( obj, DesignSchemaConstants.EXTENSION_NAME_ATTRIB,					ExtendedItem.EXTENSION_NAME_PROP );			String name = (String) obj.getLocalProperty( getModule( ),					DesignElement.NAME_PROP );			if ( !StringUtil.isBlank( name ) )				writer.attribute( DesignSchemaConstants.NAME_ATTRIB, name );			String extendsFrom = obj.getExtendsName( );			if ( !StringUtil.isBlank( extendsFrom ) )				writer.attribute( DesignSchemaConstants.EXTENDS_ATTRIB,						extendsFrom );			writer.attribute( DesignSchemaConstants.ID_ATTRIB, new Long( obj					.getID( ) ).toString( ) );			// write all other properties			List props = extDefn.getProperties( );			for ( int i = 0; i < props.size( ); i++ )			{				PropertyDefn prop = (PropertyDefn) props.get( i );				String propName = prop.getName( );				if ( ExtendedItem.NAME_PROP.equals( propName )						|| ExtendedItem.EXTENSION_NAME_PROP.equals( propName )						|| ExtendedItem.EXTENDS_PROP.equals( propName ) )					continue;								// TODO: support extending those xml properties.				// Now, each time a child is initialized, its xml-properties are				// serialized on the IReportItem itself, never minding whether				// the xml-property values are set locally or extended from				// parent.				switch ( prop.getTypeCode( ) )				{					case PropertyType.LIST_TYPE :						writeSimplePropertyList( obj, propName );						break;					case PropertyType.XML_TYPE :						writeProperty( obj, getTagByPropertyType( prop ),								propName, true );						break;					case PropertyType.STRUCT_TYPE :						if ( prop.isList( ) )							writeStructureList( obj, propName );						else							writeStructure( obj, propName );						break;					default :						writeProperty( obj, getTagByPropertyType( prop ), prop								.getName( ), false );						break;				}			}						// write the slot content			if ( extDefn.isContainer( ) )			{				for ( int i = 0; i < extDefn.getSlotCount( ); i++ )				{					SlotDefn slotDefn = (SlotDefn) extDefn.getSlot( i );					writeContents( obj, i, slotDefn.getXmlName( ) );				}			}		}				writer.endElement( );	}