private @NotNull Set<ExceptionLineRefiner.RefinerMatchResult> getExceptionOrigin(@NotNull PsiFile file, int lineStart, int lineEnd) {
      if (!file.isValid()) return Set.of();
      PsiElement element = file.findElementAt(lineStart);
      Set<ExceptionLineRefiner.RefinerMatchResult> candidates = new HashSet<>();
      while (element != null && element.getTextRange().getStartOffset() < lineEnd) {
        PsiElement finalElement = element;
        ExceptionLineRefiner.RefinerMatchResult matched = myElementMatcher.matchElement(finalElement);
        if (matched != null) {
          candidates.add(matched);
          if (candidates.size() > 1) return candidates;
        }
        element = PsiTreeUtil.nextLeaf(element);
      }
      return candidates;
    }
private @NotNull Set<ExceptionLineRefiner.RefinerMatchResult> getExceptionOrigin(@NotNull PsiFile file, int lineStart, int lineEnd)