} catch (JavaModelException ex) {
	protected void commitWorkingCopy(IProgressMonitor monitor, Object element, CompilationUnitInfo info, boolean overwrite) throws CoreException {		if (monitor == null)			monitor= new NullProgressMonitor();		monitor.beginTask("", 100); //$NON-NLS-1$		try {			IProgressMonitor subMonitor= getSubProgressMonitor(monitor, 50);			try {				synchronized (info.fCopy) {					info.fCopy.reconcile(ICompilationUnit.NO_AST, false, null, subMonitor);				}			} catch (JavaModelException ex) {				// Ignore: save anyway			} finally {				subMonitor.done();			}			IDocument document= info.fTextFileBuffer.getDocument();			IResource resource= info.fCopy.getResource();			Assert.isTrue(resource instanceof IFile);			if (!resource.exists()) {				// underlying resource has been deleted, just recreate file, ignore the rest				subMonitor= getSubProgressMonitor(monitor, 50);				try {					createFileFromDocument(subMonitor, (IFile) resource, document);				} finally {					subMonitor.done();				}				return;			}			if (fSavePolicy != null)				fSavePolicy.preSave(info.fCopy);			try {				subMonitor= getSubProgressMonitor(monitor, 50);				fIsAboutToSave= true;				info.fCopy.commitWorkingCopy(overwrite, subMonitor);			} 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;				subMonitor.done();			}			// If here, the dirty state of the editor will change to "not dirty".			// Thus, the state changing flag will be reset.			if (info.fModel instanceof AbstractMarkerAnnotationModel) {				AbstractMarkerAnnotationModel model= (AbstractMarkerAnnotationModel) info.fModel;				model.updateMarkers(document);			}			if (fSavePolicy != null) {				ICompilationUnit unit= fSavePolicy.postSave(info.fCopy);				if (unit != null && info.fModel instanceof AbstractMarkerAnnotationModel) {					IResource r= unit.getResource();					IMarker[] markers= r.findMarkers(IMarker.MARKER, true, IResource.DEPTH_ZERO);					if (markers != null && markers.length > 0) {						AbstractMarkerAnnotationModel model= (AbstractMarkerAnnotationModel) info.fModel;						for (int i= 0; i < markers.length; i++)							model.updateMarker(document, markers[i], null);					}				}			}		} finally {			monitor.done();		}	}