@Override
  public TreeElement @NotNull [] getChildren() {
    if (!myElement.isValid()) return EMPTY_ARRAY;
    final ArrayList<TreeElement> result = new ArrayList<>();
    final DomElementVisitor elementVisitor = new DomElementVisitor() {
      @Override
      public void visitDomElement(final DomElement element) {
        if (element instanceof GenericDomValue) return;
        final DomService.StructureViewMode viewMode = myDescriptor.fun(element);
        switch (viewMode) {
          case SHOW -> result.add(createChildElement(element));
          case SHOW_CHILDREN -> DomUtil.acceptAvailableChildren(element, this);
          case SKIP -> {}
        }
      }
    };
    DomUtil.acceptAvailableChildren(myElement, elementVisitor);
    return result.toArray(TreeElement.EMPTY_ARRAY);
  }
@Override
  public TreeElement @NotNull [] getChildren()