@Override
    public void visitInlineDocTag(@NotNull PsiInlineDocTag tag) {
      @NonNls final String name = tag.getName();
      if (!"inheritDoc".equals(name)) {
        return;
      }
      final PsiDocComment docComment = tag.getContainingComment();
      if (docComment == null) {
        return;
      }
      final PsiJavaDocumentedElement owner = docComment.getOwner();
      if (owner instanceof PsiJavaModule) {
        registerError(tag, WarningType.MODULE);
        return;
      }
      if (owner instanceof PsiField) {
        registerError(tag, WarningType.FIELD);
        return;
      }
      else if (owner instanceof PsiClass) {
        registerError(tag, WarningType.CLASS);
        return;
      }
      else if (owner instanceof PsiMethod method) {
        if (method.isConstructor()) {
          registerError(tag, WarningType.CONSTRUCTOR);
          return;
        }
        if (!MethodUtils.hasSuper(method)) {
          registerError(tag, WarningType.NO_SUPER);
          return;
        }
      }
      else {
        return;
      }
      final PsiElement parent = tag.getParent();
      if (parent instanceof PsiDocTag docTag) {
        @NonNls final String docTagName = docTag.getName();
        if ((docTagName.equals("throws") || docTagName.equals("exception")) &&
            !isCheckExceptionAndPresentInThrowsList((PsiMethod)owner, docTag)) {
          return;
        }
      }
      final PsiDocToken[] docTokens = PsiTreeUtil.getChildrenOfType(parent, PsiDocToken.class);
      if (docTokens == null) {
        return;
      }
      for (PsiDocToken docToken : docTokens) {
        final IElementType tokenType = docToken.getTokenType();
        if (!JavaDocTokenType.DOC_COMMENT_DATA.equals(tokenType)) {
          continue;
        }
        if (!StringUtil.isEmptyOrSpaces(docToken.getText())) {
          return;
        }
      }
      registerError(tag, WarningType.EMPTY);
    }
@Override
    public void visitInlineDocTag(@NotNull PsiInlineDocTag tag)