Looks good but I only quickly scanned the diff. Just an idea: instead of assigning elements in expandos (and having to keep track of whether we're attached or not, and store the relationships in a HashMap when we're not); how about assigning unique IDs to elements and storing that ID in the expandos? (and we would no longer need the map) Wouldn't that solve all our memory leak issues? (or at least most of them) I.e. instead of "var layer = elem.__layer;", if would be "var layer = $doc.getElementById(elem.__layer);", with the IDs generated by Document.get().createUniqueId();
http://gwt-code-reviews.appspot.com/1601804/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
