@Override
  protected void checkAttribute(@NotNull final XmlAttribute attribute, @NotNull final ProblemsHolder holder, final boolean isOnTheFly) {
    if (attribute.getValueElement() == null) {
      final XmlTag tag = attribute.getParent();

      if (tag instanceof HtmlTag) {
        XmlElementDescriptor elementDescriptor = tag.getDescriptor();
        if (elementDescriptor == null || elementDescriptor instanceof AnyXmlElementDescriptor) {
          return;
        }

        XmlAttributeDescriptor attributeDescriptor = attribute.getDescriptor();
        if (attributeDescriptor != null && !(attributeDescriptor instanceof AnyXmlAttributeDescriptor)) {
          String name = attribute.getName();
          if (!HtmlUtil.isBooleanAttribute(attributeDescriptor, null) && (!isCustomValuesEnabled() || !isCustomValue(name))) {
            final boolean html5 = HtmlUtil.isHtml5Context(tag);
            LocalQuickFix[] quickFixes = !html5 ? new LocalQuickFix[]{
              new AddCustomHtmlElementIntentionAction(BOOLEAN_ATTRIBUTE_KEY, name, XmlAnalysisBundle.message(
                "html.quickfix.add.custom.html.boolean.attribute", name)),
              XmlQuickFixFactory.getInstance().addAttributeValueFix(attribute),
              new RemoveAttributeIntentionFix(name),
            } : new LocalQuickFix[] {
              XmlQuickFixFactory.getInstance().addAttributeValueFix(attribute)
            };


            String error = null;
            if (html5) {
              if (attributeDescriptor instanceof XmlEnumerationDescriptor
                  && ((XmlEnumerationDescriptor<?>)attributeDescriptor).getValueDeclaration(attribute, "") == null) {
                error = XmlPsiBundle.message("xml.inspections.attribute.requires.value", attribute.getName());
              }
            } else {
              error = XmlAnalysisBundle.message("html.inspections.attribute.is.not.boolean", attribute.getName());
            }
            if (error != null) {
              registerProblemOnAttributeName(attribute, error, holder, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, quickFixes);
            }
          }
        }
      }
    }
  }
@Override
  protected void checkAttribute(@NotNull final XmlAttribute attribute, @NotNull final ProblemsHolder holder, final boolean isOnTheFly)