When I want to solve "baptism problem", then I cannot simply put whole object into GenericCommand GenericCommand .
The trick is not to store objects involved in transaction:
This interface is introduced into root object (@@ pat.root), so it is possible to execute code like this:
{ ((Persisteble)myRoot).takeSnapshot(); }
This is part of public API.