for ( int i = 0; i < names.size( ); i++ ) { extensionPropValues.remove( names.get( i ) ); }
	public void initializeReportItem( Module module )			throws ExtendedElementException	{		if ( reportItem != null )			return;		PeerExtensionElementDefn extDefn = (PeerExtensionElementDefn) getExtDefn( );		if ( extDefn == null )			throw new ExtendedElementException(					ExtendedElementException.PLUGIN_ID,					SemanticError.DESIGN_EXCEPTION_EXTENSION_NOT_FOUND, null );		IReportItemFactory elementFactory = extDefn.getReportItemFactory( );		assert elementFactory != null;		reportItem = elementFactory.newReportItem( element.getHandle( module ) );		// if the item caches the property values of extension, transfer them		// and then clear the cached values		List names = new ArrayList( );		Collection values = extensionPropValues.keySet( );		if ( values != null )		{			Iterator iter = values.iterator( );			while ( iter.hasNext( ) )			{				String propName = (String) iter.next( );				ElementPropertyDefn prop = element.getPropertyDefn( propName );				assert prop != null;				Object value = extensionPropValues.get( propName );				assert value != null;				if ( prop.getTypeCode( ) == PropertyType.XML_TYPE )				{					byte[] raw = null;					try					{						raw = value.toString( ).getBytes(								UnicodeUtil.SIGNATURE_UTF_8 );					}					catch ( UnsupportedEncodingException e )					{						assert false;					}					reportItem.deserialize( prop.getName( ),							new ByteArrayInputStream( raw ) );					names.add( propName );				}			}		}		for ( int i = 0; i < names.size( ); i++ )		{			extensionPropValues.remove( names.get( i ) );		}	}