boolean (@NotNull CompilerRef qualifier, @NotNull CompilerRef base, int probabilityThreshold) { try { if (!myReadDataLock.tryLock()) return false; try { if (myReader == null) { throw new ReferenceIndexUnavailableException(); } IntSet ids1 = myReader.getAllContainingFileIds(qualifier); IntSet ids2 = myReader.getAllContainingFileIds(base); IntSet intersection = intersection(ids1, ids2); return (ids2.size() - intersection.size()) * probabilityThreshold < ids2.size(); } finally { myReadDataLock.unlock(); } } catch (Exception e) { onException(e, "conditional probability"); return false; } }