@Override
  public final List<TreeNode> getChildren(Object object) {
    var freshChildren = acquireFreshChildrenSet();
    try {
      Node node = getNode(object, true);
      List<Node> list = node == null ? null : node.children.get();
      if (list == null || list.isEmpty()) return emptyList();
      for (Node child : list) {
        // Freshly created children are updated on creation,
        // and update may be expensive, so don't update twice.
        if (!freshChildren.isFresh(child)) {
          child.update();
        }
      }
      return unmodifiableList(list);
    }
    finally {
      freshChildren.release();
    }
  }
@Override
  public final List<TreeNode> getChildren(Object object)