Iterator images = source.getPropertyHandle( Module.IMAGES_PROP ) .iterator( );
Iterator images = source.getPropertyHandle( IModuleModel.IMAGES_PROP ).iterator( );
	public static void duplicateProperties( DesignElementHandle source,			DesignElementHandle destination, boolean onlyFactoryProperty )	{		assert source != null;		assert destination != null;		if ( !( ( source instanceof ReportDesignHandle ) && ( destination instanceof LibraryHandle ) ) )			assert destination.getDefn( ).getName( ).equalsIgnoreCase(					source.getDefn( ).getName( ) );		if ( source.getDefn( ).allowsUserProperties( ) )		{			PropertyHandle propHandle = source					.getPropertyHandle( DesignElement.USER_PROPERTIES_PROP );			Object value = source.getElement( ).getUserProperties( );			Object valueToSet = null;			if ( propHandle != null )			{				valueToSet = ModelUtil.copyValue( propHandle.getDefn( ), value );			}			if ( valueToSet != null )			{				Iterator iter = ( (List) valueToSet ).iterator( );				while ( iter.hasNext( ) )				{					UserPropertyDefn userPropDefn = (UserPropertyDefn) iter							.next( );					destination.getElement( )							.addUserPropertyDefn( userPropDefn );				}			}		}		if ( source.getElement( ) instanceof IExtendableElement )			duplicateExtensionIdentifier( source.getElement( ), destination					.getElement( ), source.getModule( ) );		Iterator iter = source.getPropertyIterator( );		while ( iter.hasNext( ) )		{			PropertyHandle propHandle = (PropertyHandle) iter.next( );			String propName = propHandle.getDefn( ).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 )					|| IOdaExtendableElementModel.EXTENSION_ID_PROP							.equals( propName )					|| IExtendedItemModel.EXTENSION_NAME_PROP.equals( propName )					|| DesignElement.REF_TEMPLATE_PARAMETER_PROP							.equals( propName )					|| DesignElement.VIEW_ACTION_PROP.equals( propName ) )				continue;			ElementPropertyDefn propDefn = destination.getElement( )					.getPropertyDefn( propName );			if ( propDefn == null )				continue;			Object value = null;			// the special case for the toc, pageBreakAfter and pageBreakBefore			// properties on the group element			// for toc the default value is the group expression.			if ( propHandle.getElement( ) instanceof GroupElement					&& ( GroupElement.TOC_PROP.equals( propName )							|| IStyleModel.PAGE_BREAK_AFTER_PROP									.equals( propName ) || IStyleModel.PAGE_BREAK_BEFORE_PROP							.equals( propName ) || IStyleModel.PAGE_BREAK_INSIDE_PROP							.equals( propName ) ) )				value = propHandle.getElement( ).getLocalProperty(						propHandle.getModule( ), propDefn );			else if ( onlyFactoryProperty )				value = propHandle.getElement( ).getFactoryProperty(						propHandle.getModule( ), propDefn );			else if ( Module.IMAGES_PROP.equals( propName ) )			{				// Copy the embedded images				Iterator images = source.getPropertyHandle( Module.IMAGES_PROP )						.iterator( );				while ( images.hasNext( ) )				{					StructureHandle image = (StructureHandle) images.next( );					try					{						ElementExportUtil.exportStructure( image,								(LibraryHandle) destination, false );					}					catch ( SemanticException e )					{						assert false;					}				}				continue;			}			else				value = propHandle.getElement( ).getStrategy( )						.getPropertyExceptRomDefault( propHandle.getModule( ),								propHandle.getElement( ), propDefn );			Object valueToSet = ModelUtil.copyValue( propHandle.getDefn( ),					value );			destination.getElement( ).setProperty( propName, valueToSet );		}	}