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/UIPerformChangeOperation.java
}
	public UIPerformChangeOperation(Display display, CreateChangeOperation op, IWizardContainer container) {
		super(op);
		fDisplay= display;
		fWizardContainer= container;
	}
	
	protected void executeChange(final IProgressMonitor pm) throws CoreException {
		if (fDisplay != null && !fDisplay.isDisposed()) {
			final CoreException[] exception= new CoreException[1];
			final ISchedulingRule rule= ResourcesPlugin.getWorkspace().getRoot();
			final Thread callerThread= Thread.currentThread();
			Runnable r= new Runnable() {
				public void run() {
					try {
						final Button cancel= getCancelButton();
						boolean enabled= true;
						if (cancel != null && !cancel.isDisposed()) {
							enabled= cancel.isEnabled();
							cancel.setEnabled(false);
						}
						try {
							UIPerformChangeOperation.super.executeChange(pm);
						} finally {
							if (cancel != null && !cancel.isDisposed()) {
								cancel.setEnabled(enabled);
							}
						}
					} catch (CoreException e) {
						exception[0]= e;