IIndexFragmentFile selectIndexFile( int linkageID, IIndexFileLocation ifl, ISignificantMacros sigMacros) throws CoreException { LinkageTask map = findRequestMap(linkageID); if (map != null) { LocationTask locTask = map.find(ifl); if (locTask != null) { FileVersionTask task = locTask.findVersion(sigMacros); if (task != null) { return task.fOutdated ? null : task.fIndexFile; } } } IIndexFragmentFile[] files = getAvailableIndexFiles(linkageID, ifl); for (IIndexFragmentFile file : files) { if (sigMacros.equals(file.getSignificantMacros())) return file; } return null; }