if ( StyledElement.STYLE_PROP.equals( propName ) || DesignElement.EXTENDS_PROP.equals( propName ) || DesignElement.USER_PROPERTIES_PROP.equals( propName ) )
if ( IStyledElementModel.STYLE_PROP.equals( propName ) || IDesignElementModel.EXTENDS_PROP.equals( propName ) || IDesignElementModel.USER_PROPERTIES_PROP .equals( propName ) )
	public void execute( DesignElement source, DesignElement destination )	{		if ( destination.getExtendsName( ) == null				&& !destination.isVirtualElement( ) )		{			clearDisplayName( destination );			return;		}		destination.setExtendsName( null );		destination.setBaseId( DesignElement.NO_BASE_ID );		// copy user property definitions first, otherwise definition will		// not be found when copying property values		Iterator iter = null;		DesignElement current = null;		if ( !source.isVirtualElement( ) )		{			current = source.getExtendsElement( );			while ( current != null )			{				if ( current.hasUserProperties( ) )				{					iter = current.getLocalUserProperties( ).iterator( );					while ( iter.hasNext( ) )					{						UserPropertyDefn uDefn = (UserPropertyDefn) iter.next( );						if ( destination.getLocalUserPropertyDefn( uDefn								.getName( ) ) != null )							continue;						destination								.addUserPropertyDefn( (UserPropertyDefn) uDefn										.copy( ) );					}				}				current = current.getExtendsElement( );			}		}		// the element id is the same as the matrix, then if we add the copy		// to the design tree, we will check the id and re-allocate a unique		// name for it. This is the same issue as the name does.		iter = source.getPropertyDefns( ).iterator( );		Module module = source.getRoot( );		while ( iter.hasNext( ) )		{			ElementPropertyDefn propDefn = (ElementPropertyDefn) iter.next( );			if ( !propDefn.canInherit( ) && !propDefn.isStyleProperty( ) )				continue;			String propName = propDefn.getName( );			// Style property and extends property will be removed.			// The properties inherited from style or parent will be			// flatten to new element.			if ( StyledElement.STYLE_PROP.equals( propName )					|| DesignElement.EXTENDS_PROP.equals( propName )					|| DesignElement.USER_PROPERTIES_PROP.equals( propName ) )				continue;			if ( destination.getLocalProperty( null, propDefn ) != null )				continue;			current = source.isVirtualElement( )					? source.getVirtualParent( )					: source.getExtendsElement( );			while ( current != null )			{				Object value = current.getLocalProperty( module, propDefn );				if ( value != null )				{					destination.setProperty( propDefn, ModelUtil.copyValue(							propDefn, value ) );					break;				}				current = current.isVirtualElement( ) ? current						.getVirtualParent( ) : current.getExtendsElement( );			}		}		clearDisplayName( destination );	}