Bug 77649 'Refactor -> Undo' enabled after consecutive change
I200411022000 Having: package test2; public class A { public C c= new C(); public void foo() { } } package test2; public class B { public void bar() { new A().foo(); } } package test2; public class C { } and: - open all 3 CUs - move A#foo() to C - remove 'a' from 'new A().c.foo(a);' in B - save B - Refactor -> Undo -> lost parenthesis in B because undo did no longer match
org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/PerformChangeOperation.java
if (fValidationStatus.hasFatalError())
						return;
					if (fUndoManager != null) {
						ResourcesPlugin.getWorkspace().checkpoint(false);
						fUndoManager.aboutToPerformChange(fChange);
					}
					fChangeExecutionFailed= true;
					fUndoChange= fChange.perform(new SubProgressMonitor(monitor, 9));
					fChangeExecutionFailed= false;
					fChangeExecuted= true;
					if (fUndoManager != null) {
						ResourcesPlugin.getWorkspace().checkpoint(false);
						fUndoManager.changePerformed(fChange);
					}
					fChange.dispose();
					if (fUndoChange != null) {
						fUndoChange.initializeValidationData(new NotCancelableProgressMonitor(
							new SubProgressMonitor(monitor, 1)));
						undoInitialized= true;
					}
					if (fUndoManager != null) {
						if (fUndoChange != null) {
							fUndoManager.addUndo(fUndoName, fUndoChange);
						} else {
							fUndoManager.flush();
						}
					}
				} catch (CoreException e) {
					if (fUndoManager != null)
						fUndoManager.flush();