For the record: Rafa talked some sense into me offline. The Stamper notion really isn't practical given the limitations of SafeHtmlTemplates, so I'm backing off of most of this craziness. Instead we'll just delete the extends SafeHtmlRenderer thing. That will also allow backing away from the phase stuff, since we won't yet shift responsibility for the getElementById call.
Instead, when this is done Rafa will look into extracting a superclass out of UIObject that is able to cache calls made to setStyleName, setVisible, setWidget, etc., before setElement has been called; maybe apply them during getElement(); but mainly provide access to them for smart subclasses to use in their render methods. (Eventually this new superclass, RenderableObject, should itself implement IsRenderable, but not in the first pass.) With that in hand we should be able to make move RenderableComposite back into Composite, and RenderablePanel back into HTMLPanel. WOOT! http://gwt-code-reviews.appspot.com/1446811/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors