I'm not sure why the JsNamer classes (e.g. JsPrettyNamer) don't already do the right thing (don't they?). They definitely do have naming disambiguation logic, etc. Is there something more fundamental here?
http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java File dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java (right): http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java#newcode198 dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java:198: } whitespace http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java File dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java (right): http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java#newcode67 dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java:67: "static class Jso2 extends JavaScriptObject implements Iface2 {", break up into 2 lines for readability http://gwt-code-reviews.appspot.com/1467812/diff/1/dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java#newcode79 dev/core/test/com/google/gwt/dev/jjs/impl/JsoDevirtualizerTest.java:79: // The salient point in the results below is that the JSO method used for s/val1 and val1/val1 and val2 s/val2 and val3/val3 and val4 s/name the/name than the http://gwt-code-reviews.appspot.com/1467812/ -- http://groups.google.com/group/Google-Web-Toolkit-Contributors