Bug 52346 [misc] Undo yields wrong code
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/javaeditor/CompilationUnitEditor.java
if (isActivePart())
			JavaPlugin.getDefault().getASTProvider().aboutToBeReconciled(getInputJavaElement());
		
		
		synchronized (fReconcilingListeners) {
			Object[] listeners = fReconcilingListeners.getListeners();
			for (int i = 0, length= listeners.length; i < length; ++i)
				((IJavaReconcilingListener)listeners[i]).aboutToBeReconciled();
		}
	}
	
	/*
	 * @see org.eclipse.jdt.internal.ui.text.java.IJavaReconcilingListener#reconciled(org.eclipse.jdt.core.dom.CompilationUnit)
	 * @since 3.0
	 */
	public void reconciled(CompilationUnit ast) {
		
		if (isActivePart())
			JavaPlugin.getDefault().getASTProvider().reconciled(ast, getInputJavaElement());
		
		
		synchronized (fReconcilingListeners) {
			Object[] listeners = fReconcilingListeners.getListeners();
			for (int i = 0, length= listeners.length; i < length; ++i)
				((IJavaReconcilingListener)listeners[i]).reconciled(ast);
		}
		
		
		if (PreferenceConstants.getPreferenceStore().getBoolean(PreferenceConstants.EDITOR_SYNC_OUTLINE_ON_CURSOR_MOVE)) {
			Shell shell= getSite().getShell();