Release R2.2.0
Summary of changes:
- Prevent cycles by rejecting attempts to add an ancestor as a child.
- Ensure
remove_all!detaches children by clearing parent links. - Guard
rename_childagainst sibling name collisions. - Harden binary child assignment (
set_child_at) with proper index errors and cleanup. - Make traversals resilient to missing children by skipping nils in postorder/breadth.
- Fix
each_levelto return a level-wise enumerator when no block is given. - Improve
to_sto show<Empty>for nil content. - Bump version to 2.2.0 and update History/API-CHANGES.