static @Nullable DomInvocationHandler createTagHandler(@NotNull XmlTag tag) {
    PsiElement candidate = PhysicalDomParentStrategy.getParentTagCandidate(tag);
    if (!(candidate instanceof XmlTag parentTag)) {
      return createRootHandler(tag);
    }

    DomInvocationHandler parent = getParentDom(parentTag);
    if (parent == null) return null;

    String localName = tag.getLocalName();
    if (StringUtil.isEmpty(localName)) return null;

    DomGenericInfoEx info = parent.getGenericInfo();
    DomFixedChildDescription fixedDescription = findChildrenDescription(info.getFixedChildrenDescriptions(), tag, parent);
    if (fixedDescription != null) {
      return createIndexedHandler(parent, localName, tag.getNamespace(), fixedDescription, tag);
    }
    DomCollectionChildDescription collectionDescription = findChildrenDescription(info.getCollectionChildrenDescriptions(), tag, parent);
    if (collectionDescription != null) {
      return createCollectionHandler(tag, collectionDescription, parent, parentTag);
    }

    return createCustomHandler(tag, parent, localName, info);
  }
static @Nullable DomInvocationHandler createTagHandler(@NotNull XmlTag tag)