@Override
  public XmlElementDescriptor getElementDescriptor(@NotNull XmlTag tag) {
    XmlElementDescriptor elementDescriptor = super.getElementDescriptor(tag);

    if (LOG.isDebugEnabled()) {
      LOG.debug("Descriptor from rng for tag " +
                tag.getName() +
                " is " +
                (elementDescriptor != null ? elementDescriptor.getClass().getCanonicalName() : "NULL"));
    }

    String namespace;
    if (elementDescriptor == null &&
        !((namespace = tag.getNamespace()).equals(XmlUtil.XHTML_URI))) {
      var nsDescriptor = HTML_URI.equals(namespace) ? this : tag.getNSDescriptor(namespace, true);
      if (HTML_URI.equals(namespace) || MATH_ML_NAMESPACE.equals(namespace) || SVG_NAMESPACE.equals(namespace)) {
        return new RelaxedAnyHtmlElementDescriptor(null, nsDescriptor);
      }
      else {
        return new AnyXmlElementDescriptor(null, nsDescriptor);
      }
    }

    return elementDescriptor;
  }
@Override
  public XmlElementDescriptor getElementDescriptor(@NotNull XmlTag tag)