@Internal
  public @Nullable Pair<@NotNull PsiElement, @Nullable PsiElement> findTargetElementAndContext(
    @NotNull Editor editor,
    int offset,
    @Nullable PsiFile file
  ) {
    PsiElement originalElement = getContextElement(file, offset);
    PsiElement element = findTargetElementAtOffset(editor, offset, file, originalElement);
    if (element == null) {
      PsiElement list = ParameterInfoControllerBase.findArgumentList(file, offset, -1);
      if (list != null) {
        element = list;
      }
    }
    if (element == null && file == null) return null; //file == null for text field editor

    if (element == null) { // look if we are within a javadoc comment
      element = assertSameProject(originalElement);
      if (element == null) return null;

      PsiComment comment = PsiTreeUtil.getParentOfType(element, PsiComment.class);
      if (comment == null) return null;

      element = comment instanceof PsiDocCommentBase ? ((PsiDocCommentBase)comment).getOwner() : comment.getParent();
      if (element == null) return null;
      //if (!(element instanceof PsiDocCommentOwner)) return null;
    }
    return Pair.create(element, originalElement);
  }
@Internal
  public @Nullable Pair<@NotNull PsiElement, @Nullable PsiElement> findTargetElementAndContext(
    @NotNull Editor editor,
    int offset,
    @Nullable PsiFile file
  )