void (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); } }