Bug 68190 UndoManager and perform change operation must call #dispose on change to be executed if validation fails
3.0 Dispose isn't called if the change object couldn't be executed (isValid didn't return a fatal error).
org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/internal/ui/refactoring/ChangeExceptionHandler.java
dialog.open();
	}
	
	private void performUndo(final Change undo) {
		IWorkspaceRunnable runnable= new IWorkspaceRunnable() {
			public void run(IProgressMonitor monitor) throws CoreException {
				monitor.beginTask("", 11); 
				undo.initializeValidationData(new NotCancelableProgressMonitor(new SubProgressMonitor(monitor, 1)));
				if (undo.isValid(new SubProgressMonitor(monitor,1)).hasFatalError()) {
					monitor.done();
					return;
				}
				undo.perform(new SubProgressMonitor(monitor, 9));
			}
		};
		WorkbenchRunnableAdapter adapter= new WorkbenchRunnableAdapter(runnable,
			ResourcesPlugin.getWorkspace().getRoot());
		ProgressMonitorDialog dialog= new ProgressMonitorDialog(fParent);
		try {
			dialog.run(false, false, adapter);
		} catch (InvocationTargetException e) {
			ExceptionHandler.handle(e, fParent, 
				RefactoringUIMessages.ChangeExceptionHandler_rollback_title,  
				RefactoringUIMessages.ChangeExceptionHandler_rollback_message + fName); 
		} catch (InterruptedException e) {
			
		}
	}
}