Looks like this is heading in a good direction. Idea for the test code.
Another high level idea is that you a single test case superclass with the bulk of the code, then you have to two subclasses that only differ in how typeOracle is built. We use this pattern in other places. http://gwt-code-reviews.appspot.com/1188802/diff/4001/5004 File dev/core/test/com/google/gwt/dev/javac/TypeOracleMediatorTest.java (right): http://gwt-code-reviews.appspot.com/1188802/diff/4001/5004#newcode122 dev/core/test/com/google/gwt/dev/javac/TypeOracleMediatorTest.java:122: InputStream istream = loader.getResourceAsStream(resourcePath); There should be a Util.readUrlAsBytes() or something that does all this mess for you. http://gwt-code-reviews.appspot.com/1188802/diff/4001/5004#newcode1188 dev/core/test/com/google/gwt/dev/javac/TypeOracleMediatorTest.java:1188: compileAndRefresh(); I think what you really want to do is have compileAndRefresh() build two different oracles, and have your assertions simply check both oracles at the same time. http://gwt-code-reviews.appspot.com/1188802/show -- http://groups.google.com/group/Google-Web-Toolkit-Contributors