@Override
  public boolean isLeaf(Object object) {
    Node node = getEntry(object);
    if (node == null) return true;
    if (node.leafState == LeafState.ALWAYS) return true;
    if (node.leafState == LeafState.NEVER) return false;
    if (node.leafState == LeafState.ASYNC && node.children == null) promiseChildren(node);
    List<Node> children = node.children;
    // leaf only if no children were loaded
    return children != null && children.isEmpty();
  }
@Override
  public boolean isLeaf(Object object)