AbstractNode add_child(AbstractNode c)
Adds a child node to this node. The child node is added last in the child list and its parent reference is updated.
Returns the child node, NOT the current node.
The updated child node is returned.