if (fSavePolicy != null) fSavePolicy.postSave(original);
	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;						try {									// update structure, assumes lock on info.fCopy				info.fCopy.reconcile();								ICompilationUnit original= (ICompilationUnit) info.fCopy.getOriginalElement();				IResource resource= original.getUnderlyingResource();								if (resource != null && !overwrite)					checkSynchronizationState(info.fModificationStamp, resource);								if (fSavePolicy != null)					fSavePolicy.preSave(info.fCopy);												if (info.fBufferSynchronizer != null)					info.fBufferSynchronizer.uninstall();									// commit working copy				info.fCopy.commit(overwrite, monitor);								if (fSavePolicy != null)					fSavePolicy.postSave(original);								AbstractMarkerAnnotationModel model= (AbstractMarkerAnnotationModel) info.fModel;				model.updateMarkers(info.fDocument);								if (resource != null)					info.setModificationStamp(computeModificationStamp(resource));													} catch (JavaModelException x) {				throw new CoreException(x.getStatus());			}					} else {			super.doSaveDocument(monitor, element, document, overwrite);		}			}