private String computeId(final ASTNode declarationNode, final IProgressMonitor monitor) {
private String computeId(final ASTNode declarationNode, final IProgressMonitor monitor) throws InterruptedException {
	private String computeId(final ASTNode declarationNode, final IProgressMonitor monitor) {		Assert.isNotNull(monitor);		long serialVersionID= SERIAL_VALUE;		try {			monitor.beginTask(CorrectionMessages.SerialVersionHashProposal_computing_id, 200);			final IJavaProject project= fCompilationUnit.getJavaProject();			final IPath path= fCompilationUnit.getResource().getFullPath();			try {				FileBuffers.getTextFileBufferManager().connect(path, new SubProgressMonitor(monitor, 10));				final ITextFileBuffer buffer= FileBuffers.getTextFileBufferManager().getTextFileBuffer(path);				if (buffer.isDirty() && buffer.isStateValidated() && buffer.isCommitable() && displayYesNoMessage(CorrectionMessages.SerialVersionHashProposal_save_caption, CorrectionMessages.SerialVersionHashProposal_save_message))					buffer.commit(new SubProgressMonitor(monitor, 20), true);				else					monitor.worked(20);			} finally {				FileBuffers.getTextFileBufferManager().disconnect(path, new SubProgressMonitor(monitor, 10));			}			project.getProject().build(IncrementalProjectBuilder.INCREMENTAL_BUILD, new SubProgressMonitor(monitor, 60));			long[] ids= calculateSerialVersionIds(new String[] {getQualifiedName(declarationNode)}, project, new SubProgressMonitor(monitor, 100));			if (ids.length == 1)				serialVersionID= ids[0];		} catch (CoreException exception) {			displayErrorMessage(exception);		} catch (IOException exception) {			displayErrorMessage(exception);		} finally {			monitor.done();		}		return serialVersionID + LONG_SUFFIX;	}