So at the surface, it looks like a great way to ensure the user can't go backwards in the application and redo or undo things they shouldn't be allowed to do...

I didn't really envision this mechanism as a way to prevent the user from going backwards. There are much less drastic and more elegant ways to deal with that problem.
 
however, I don't think it guarantees this without the developer being really careful.  What it DOES do, is allow a sophisticated developer the ability to cleanup state earlier and make the application much more efficient in how it uses memory.

Yes, that is the idea. It could be a background thread or perhaps a navigation hook. The developer would have to be aware of the consequences, but I see it more something a framework will leverage. And you could serialize access to the tree to ensure it is not invoked prematurely from a double click (the waiting thread would be able to react to the tree being absent appropriately).

-Dan

--
Dan Allen
Senior Software Engineer, Red Hat | Author of Seam in Action

http://mojavelinux.com
http://mojavelinux.com/seaminaction
http://in.relation.to/Bloggers/Dan

NOTE: While I make a strong effort to keep up with my email on a daily
basis, personal or other work matters can sometimes keep me away
from my email. If you contact me, but don't hear back for more than a week,
it is very likely that I am excessively backlogged or the message was
caught in the spam filters.  Please don't hesitate to resend a message if
you feel that it did not reach my attention.