The call self.childNodes always allocates the collection even if a nil
value is acceptable, i.e. hasChildNodes should return true even if the
childNodes Set is nil but should not allocate it yet.
Hence self.childNodes should only be used when appending child nodes.
Do not allocate empty collections for child nodes or attributes when
initializing new HTML Nodes or Elements. These are initialized the first
time they are accessed.
Analogously, the mutable data string of CharacterData is also allocated
with the empty string on first access.