info.fCopy.reconcile();
synchronized (info.fCopy) { info.fCopy.reconcile(); }
	protected void doSaveDocument(IProgressMonitor monitor, Object element, IDocument document, boolean overwrite) throws CoreException {						ElementInfo elementInfo= getElementInfo(element);				if (elementInfo instanceof CompilationUnitInfo) {			CompilationUnitInfo info= (CompilationUnitInfo) elementInfo;						// update structure, assumes lock on info.fCopy			info.fCopy.reconcile();						ICompilationUnit original= (ICompilationUnit) info.fCopy.getOriginalElement();			IResource resource= original.getResource();						if (resource == null) {				// underlying resource has been deleted, just recreate file, ignore the rest				super.doSaveDocument(monitor, element, document, overwrite);				return;			}						if (resource != null && !overwrite)				checkSynchronizationState(info.fModificationStamp, resource);							if (fSavePolicy != null)				fSavePolicy.preSave(info.fCopy);						// inform about the upcoming content change			fireElementStateChanging(element);				try {								fIsAboutToSave= true;								// commit working copy				if (JavaPlugin.USE_WORKING_COPY_OWNERS)					info.fCopy.commitWorkingCopy(overwrite, monitor);				else					info.fCopy.commit(overwrite, monitor);								} catch (CoreException x) {				// inform about the failure				fireElementStateChangeFailed(element);				throw x;			} catch (RuntimeException x) {				// inform about the failure				fireElementStateChangeFailed(element);				throw x;			} finally {				fIsAboutToSave= false;			}						// If here, the dirty state of the editor will change to "not dirty".			// Thus, the state changing flag will be reset.						AbstractMarkerAnnotationModel model= (AbstractMarkerAnnotationModel) info.fModel;			model.updateMarkers(info.fDocument);						if (resource != null)				info.setModificationStamp(computeModificationStamp(resource));							if (fSavePolicy != null) {				ICompilationUnit unit= fSavePolicy.postSave(original);				if (unit != null) {					IResource r= unit.getResource();					IMarker[] markers= r.findMarkers(IMarker.MARKER, true, IResource.DEPTH_ZERO);					if (markers != null && markers.length > 0) {						for (int i= 0; i < markers.length; i++)							model.updateMarker(markers[i], info.fDocument, null);					}				}			}									} else {			super.doSaveDocument(monitor, element, document, overwrite);		}			}