Very nice illustration and almost perfect! Thanks, Craig! It works but there is nevertheless a subtle bug (in the method below)
As it is, as you multiply the moves, it repeatedly wraps nodes into a new node (instead of only its userObject).
A correct implementation would be, e.g.,
Based on this working example, I have cleaned up a messy class of mine (with more generic purposes) that had become unmaintainable.
A big thank again !
Alain