= What's a node? =
DomNodes should contain either immutable properties (such as String or Datum), or other DomNodes as children.  They
can contain other fields, but the accessors should not use "get" and "set" which identify properties.

= cloning versus copying =
Note I distinguish between cloning and copying.  Cloning is a shallow copy that does not copy child nodes.  A DomNode's
copy() method should be a deep copy.  It's clone() method needn't be a deep copy.

= pitfalls =
A deep copy is needed to make state support and serialization work.  It's easy to fail to make a deep copy, because clone
will create a shallow copy that seems to work. 