Bug 161828 [Undo] - second undo on folder move/copy merge restores old snapshot
Project A folder file1 file2 file3 file4 subfolder file1 file2 file3 file4 Move the "folder" to this existing project: Project B folder file1 file2 file3 file4 file5 file6 subfolder file1 file2 file3 file4 The move operation correctly replaces the content of file1, file2, file3, file4 in the ProjectB folder and the content of file1, file2, file3, file4 in the subfolder. Undo the move. The files return to their original location in ProjectA, and the content of the files in ProjectB have reverted to their content before the move. Redo the move. Everything still fine. Undo the move. Now the files have returned to their original location in ProjectA, but the content of the files in ProjectB still have the content from the ProjectA files.
bundles/org.eclipse.ui.ide/src/org/eclipse/ui/ide/undo/WorkspaceUndoUtil.java
*            the resources to be copied
	 * @param destination
	 *            the destination path for the resources, relative to the
	 *            workspace
	 * @param resourcesAtDestination
	 *            A list used to record the new copies.
	 * @param monitor
	 *            the progress monitor used to show progress
	 * @param uiInfo
	 *            the IAdaptable (or <code>null</code>) provided by the
	 *            caller in order to supply UI information for prompting the
	 *            user if necessary. When this parameter is not
	 *            <code>null</code>, it contains an adapter for the
	 *            org.eclipse.swt.widgets.Shell.class
	 * @param pathIncludesName
	 *            a boolean that indicates whether the specified path includes
	 *            the resource's name at the destination. If this value is
	 *            <code>true</code>, the destination will contain the desired
	 *            name of the resource (usually only desired when only one
	 *            resource is being copied). If this value is <code>false</code>,
	 *            each resource's name will be appended to the destination.
	 * @return an array of ResourceDescriptions describing any resources that
	 *         were overwritten by the copy operation
	 * @throws CoreException
	 *             propagates any CoreExceptions thrown from the resources API
	 */
	static ResourceDescription[] copy(IResource[] resources, IPath destination,
			List resourcesAtDestination, IProgressMonitor monitor,
			IAdaptable uiInfo, boolean pathIncludesName) throws CoreException {
		monitor.beginTask("", resources.length);