public boolean containsChild(TreeNode child) {
        return childSet.get().contains(child);
    }
Should ensure that if we pass the child list returned from {@link #children()} to {@link #withNewChildren(List)},
the new TreeNode should work exactly the same as the old one.
indexr-query-opt/src/main/java/io/indexr/query/TreeNode.java