ICompilationUnit[] notDeleted= deleteEmptyCus(mapping);
ICompilationUnit[] notDeleted= deleteEmptyCus(mapping, new SubProgressMonitor(pm, size));
	private void performDeletion(IStructuredSelection selection, IProgressMonitor pm) throws CoreException{		Map mapping= SourceReferenceUtil.groupByFile(getElementsToProcess(selection)); //IFile -> List of ISourceReference (elements from that file)		pm.beginTask(ReorgMessages.getString("DeleteSourceReferenceAction.deleting"), 2 * mapping.keySet().size()); //$NON-NLS-1$				if (areAllFilesReadOnly(mapping)){			String title= ReorgMessages.getString("DeleteSourceReferencesAction.title"); //$NON-NLS-1$			String label= ReorgMessages.getString("DeleteSourceReferencesAction.read_only");  //$NON-NLS-1$			MessageDialog.openInformation(JavaPlugin.getActiveWorkbenchShell(), title, label);			return;		}							List emptyCuList= Arrays.asList(getCusLeftEmpty(mapping));				for (Iterator iter= mapping.keySet().iterator(); iter.hasNext();) {			IFile file= (IFile)iter.next();			if (emptyCuList.contains(JavaCore.create(file))) //do not delete in these files				continue;			if (isReadOnly(file))				continue;			deleteAll(mapping, file, new SubProgressMonitor(pm, 1));		}				ICompilationUnit[] notDeleted= deleteEmptyCus(mapping);		for (int i= 0; i < notDeleted.length; i++) {			IFile file= (IFile)notDeleted[i].getUnderlyingResource();			if (isReadOnly(file))				continue;			deleteAll(mapping, file, new SubProgressMonitor(pm, 1));		}			}