Each object roots a tree of nodes,
where a node is a direct or indirect descendent of that object.
We may want to treat the object as a flat structure (consisting only of its
direct fields) or as a hierarchy
By treating it as a hierarchical structure,
we can communicate fine-grain changes,
create a structure editor interface,
and perform fine-grained access and concurrency control.