private @Nullable XmlAttributeDescriptor getAttributeDescriptorImpl(final String attributeName, XmlTag context) {
    final String localName = XmlUtil.findLocalNameByQualifiedName(attributeName);
    final String namespacePrefix = XmlUtil.findPrefixByQualifiedName(attributeName);
    final String namespace = namespacePrefix.isEmpty() ?
                             getDefaultNamespace() :
                             context.getNamespaceByPrefix(namespacePrefix);

    XmlAttributeDescriptor attribute = getAttribute(localName, namespace, context, attributeName);

    if (attribute instanceof AnyXmlAttributeDescriptor) {
      final ComplexTypeDescriptor.CanContainAttributeType containAttributeType =
        ((AnyXmlAttributeDescriptor)attribute).getCanContainAttributeType();
      if (containAttributeType != ComplexTypeDescriptor.CanContainAttributeType.CanContainAny && !namespace.isEmpty()) {
        final XmlNSDescriptor candidateNSDescriptor = context.getNSDescriptor(namespace, true);

        if (candidateNSDescriptor instanceof XmlNSDescriptorImpl nsDescriptor) {

          final XmlAttributeDescriptor xmlAttributeDescriptor = nsDescriptor.getAttribute(localName, namespace, context);
          if (xmlAttributeDescriptor != null) return xmlAttributeDescriptor;
          else {
            if (containAttributeType == ComplexTypeDescriptor.CanContainAttributeType.CanContainButDoNotSkip) {
              attribute = null;
            }
          }
        }
      }
    }
    return attribute;
  }
private @Nullable XmlAttributeDescriptor getAttributeDescriptorImpl(final String attributeName, XmlTag context)