@Override
  public @NotNull List<? extends Node> getChildren(Object object) {
    assert invoker.isValidThread() : "unexpected thread";
    Node node = object instanceof Node ? (Node)object : null;
    Collection<? extends Node> children = node == null ? null : node.getChildren();
    if (children == null || children.isEmpty()) return emptyList();
    assert null != comparator.get() : "set comparator before";
    node.update();
    children.forEach(Node::update); // update presentation of child nodes before processing
    return children.stream().sorted(comparator.get()).collect(toList());
  }
@Override
  public @NotNull List<? extends Node> getChildren(Object object)