@Override
  protected void checkTag(final @NotNull XmlTag tag, final @NotNull ProblemsHolder holder, final boolean isOnTheFly) {
    if (HtmlUtil.isHtmlTagContainingFile(tag)) {
      XmlElementDescriptor descriptor = tag.getDescriptor();
      if (!(descriptor instanceof HtmlElementDescriptorImpl) || !((HtmlElementDescriptorImpl)descriptor).isDeprecated()) {
        return;
      }
      String name = tag.isCaseSensitive() ?
                    tag.getName() :
                    StringUtil.toLowerCase(tag.getName());

      LocalQuickFix[] fixes;
      if ("font".equals(name)) {
        fixes = new LocalQuickFix[]{new ReplaceFontTagAction()};
      }
      else if ("applet".equals(name)) {
        fixes = new LocalQuickFix[]{new ReplaceAppletTagAction()};
      }
      else if (ourCssReplaceableTags.contains(name)) {
        fixes = new LocalQuickFix[]{new ReplaceHtmlTagWithCssAction(name)};
        if (ourHtmlReplaceableTags.contains(name)) {
          fixes = new LocalQuickFix[]{fixes[0], new ReplaceHtmlTagWithAnotherAction(name)};
        }
      }
      else if (ourHtmlReplaceableTags.contains(name)) {
        fixes = new LocalQuickFix[]{new ReplaceHtmlTagWithAnotherAction(name)};
      }
      else {
        fixes = LocalQuickFix.EMPTY_ARRAY;
      }

      MdnSymbolDocumentation documentation = getHtmlMdnDocumentation(tag, null);
      boolean deprecatedInHtml5 = documentation != null && isDeprecatedOrObsolete(documentation.getApiStatus());
      boolean inHtml5 = HtmlUtil.isHtml5Context(tag);
      if (!inHtml5 && !deprecatedInHtml5 && !HtmlUtil.hasNonHtml5Doctype(tag)) {
        fixes = ArrayUtil.append(fixes, new SwitchToHtml5Action());
      }

      registerTag(tag, "html.inspections.deprecated.tag", holder, fixes, ProblemHighlightType.LIKE_DEPRECATED);
    }
  }
@Override
  protected void checkTag(final @NotNull XmlTag tag, final @NotNull ProblemsHolder holder, final boolean isOnTheFly)