@Contract(pure = true)
  public static @Nullable ASTNode findElementOfClassAtOffset(@NotNull PsiFile file,
                                                             int offset,
                                                             @NotNull IElementType elementType,
                                                             boolean strictStart) {
    PsiElement result = null;
    for (PsiElement root : file.getViewProvider().getAllFiles()) {
      PsiElement elementAt = root.findElementAt(offset);
      if (elementAt != null) {
        PsiElement parent = getParentOfType(elementAt, elementType, strictStart, null);
        if (parent != null) {
          TextRange range = parent.getTextRange();
          if (!strictStart || range.getStartOffset() == offset) {
            if (result == null || result.getTextRange().getEndOffset() > range.getEndOffset()) {
              result = parent;
            }
          }
        }
      }
    }
    return result == null ? null : result.getNode();
  }
@Contract(pure = true)
  public static @Nullable ASTNode findElementOfClassAtOffset(@NotNull PsiFile file,
                                                             int offset,
                                                             @NotNull IElementType elementType,
                                                             boolean strictStart)