ResourcesPlugin.getWorkspace().checkpoint(false);
	private void executeChange(IProgressMonitor pm) throws CoreException {		Assert.isNotNull(fChangeContext);		IRewriteTarget[] targets= null;		try {			targets= getRewriteTargets();			beginCompoundChange(targets);			// Since we have done precondition checking this check should be fast. No PM.			// PR: 1GEWDUH: ITPJCORE:WINNT - Refactoring - Unable to undo refactor change			fChange.aboutToPerform(fChangeContext, new NullProgressMonitor());			IWorkspaceRunnable runnable= new IWorkspaceRunnable() {				public void run(IProgressMonitor monitor) throws CoreException {					Exception exception= null;					monitor.beginTask("", 10); //$NON-NLS-1$					try {						fValidationStatus= fChange.isValid(new SubProgressMonitor(monitor, 1));						if (fValidationStatus.hasFatalError())							return;						if (fUndoManager != null)							fUndoManager.aboutToPerformChange(fChange);						fChange.perform(fChangeContext, new SubProgressMonitor(monitor, 9));					} catch (ChangeAbortException e) {						exception= e;						throw new CoreException(							new Status(								IStatus.ERROR, 								JavaPlugin.getPluginId(), IJavaStatusConstants.CHANGE_ABORTED, 								RefactoringMessages.getString("PerformChangeOperation.unrecoverable_error"), e)); //$NON-NLS-1$					} catch (CoreException e) {						exception= e;						throw e;					} catch (RuntimeException e) {						exception= e;						throw e;					} finally {						if (fUndoManager != null) {							fUndoManager.changePerformed(fChange, exception);							if (fChange.isUndoable())								fUndoManager.addUndo(fUndoName, fChange.getUndoChange());						}						monitor.done();					}				}			};			JavaCore.run(runnable, pm);		} finally {			fChange.performed();			if (targets != null)				endCompoundChange(targets);		}	}