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
exception.getMessage(), exception);
		}
		handle(change, status);
	}
	
	public void handle(Change change, CoreException exception) {
		RefactoringUIPlugin.log(exception);
		handle(change, exception.getStatus());
	}
	
	private void handle(Change change, IStatus status) {
		if (change instanceof CompositeChange) {
			Change undo= ((CompositeChange)change).getUndoUntilException();
			if (undo != null) {
				RefactoringUIPlugin.log(status);
				final ErrorDialog dialog= new RefactorErrorDialog(fParent,
					RefactoringUIMessages.ChangeExceptionHandler_refactoring, 
					Messages.format(RefactoringUIMessages.ChangeExceptionHandler_unexpected_exception, new String[] {fName}), 
					status, IStatus.OK | IStatus.INFO | IStatus.WARNING | IStatus.ERROR); 
				int result= dialog.open();
				if (result == IDialogConstants.OK_ID) {
					performUndo(undo);
				}
				return;
			}
		}
		ErrorDialog dialog= new ErrorDialog(fParent,
			RefactoringUIMessages.ChangeExceptionHandler_refactoring, 
			Messages.format(RefactoringUIMessages.ChangeExceptionHandler_unexpected_exception, new String[] {fName}), 
			status, IStatus.OK | IStatus.INFO | IStatus.WARNING | IStatus.ERROR);