private void startUnresolvedRefsJob(@NotNull HighlightInfo info, @NotNull Editor editor, @NotNull PsiFile file,
                                      @NotNull ProperTextRange visibleRange) {
    ApplicationManager.getApplication().assertIsNonDispatchThread();
    ApplicationManager.getApplication().assertReadAccessAllowed();
    if (!enabled) {
      return;
    }
    PsiReference reference = info.unresolvedReference;
    if (reference == null) return;
    PsiElement refElement = reference.getElement();
    Future<?> job = refElement.getUserData(JOB);
    if (job != null) {
      return;
    }
    if (info.isUnresolvedReferenceQuickFixesComputed()) return;
    job = ForkJoinPool.commonPool().submit(ThreadContext.captureThreadContext(() ->
      ((ApplicationImpl)ApplicationManager.getApplication()).executeByImpatientReader(
        () -> ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(
          () -> registerReferenceFixes(info, editor, file, reference, visibleRange), new DaemonProgressIndicator()))), null);
    refElement.putUserData(JOB, job);
  }
private void startUnresolvedRefsJob(@NotNull HighlightInfo info, @NotNull Editor editor, @NotNull PsiFile file,
                                      @NotNull ProperTextRange visibleRange)