@Override
    public SimpleNode @NotNull [] getChildren() {
      List<FilteringNode> nodes = myNodesCache.get(this);
      if (nodes == null) {
        return myDelegate instanceof SimpleNode ? ContainerUtil.map(((SimpleNode)myDelegate).getChildren(),
                                                                    node -> new FilteringNode(this, node), NO_CHILDREN) : NO_CHILDREN;
      }

      ArrayList<FilteringNode> result = new ArrayList<>();
      for (FilteringNode node : nodes) {
        if (node.state == State.VISIBLE) {
          result.add(node);
        }
      }
      return result.toArray(new FilteringNode[0]);
    }
@Override
    public SimpleNode @NotNull [] getChildren()