else
} else {
	public void saveDocument(IProgressMonitor monitor, Object element, IDocument ignore, boolean overwrite) throws CoreException {				FileInfo fileInfo= getFileInfo(element);				if (fileInfo instanceof CompilationUnitInfo) {			CompilationUnitInfo info= (CompilationUnitInfo) fileInfo;						// 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.saveDocument(monitor, element, ignore, overwrite);				return;			}							if (fSavePolicy != null)				fSavePolicy.preSave(info.fCopy);						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;			IDocument document= getDocument(element);			model.updateMarkers(document);							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], document, null);					}				}			}									} else {			super.saveDocument(monitor, element, ignore, overwrite);		}			}