String @NotNull [] knownNamespaces() {
    final XmlTag parentTag = myTag.getParentTag();
    BidirectionalMap<String, String> map = getNamespaceMap(myTag);
    Set<String> known = Collections.emptySet();
    if (map != null) {
      known = new HashSet<>(map.values());
    }
    if (parentTag != null) {
      if (known.isEmpty()) return parentTag.knownNamespaces();
      ContainerUtil.addAll(known, parentTag.knownNamespaces());
    }
    else {
      XmlExtension xmlExtension = XmlExtension.getExtensionByElement(myTag);
      if (xmlExtension != null) {
        final XmlFile xmlFile = xmlExtension.getContainingFile(myTag);
        if (xmlFile != null) {
          final XmlTag rootTag = xmlFile.getRootTag();
          if (rootTag != null && rootTag != myTag) {
            if (known.isEmpty()) return rootTag.knownNamespaces();
            ContainerUtil.addAll(known, rootTag.knownNamespaces());
          }
        }
      }
    }
    return ArrayUtilRt.toStringArray(known);
  }
String @NotNull [] knownNamespaces()