@Override
  public boolean mayHappen(@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;
    }
  }
@Override
  public boolean mayHappen(@NotNull CompilerRef qualifier, @NotNull CompilerRef base, int probabilityThreshold)