JDefinedClass scratch = getOutline().getClassFactory().createInterface(getPackage(), "_scratch", null);
JDefinedClass _interface = getOutline().getClassFactory().createInterface(getPackage(), "Traverser", null);
setOutput(_interface);
final JTypeVar retType = scratch.generify("?");
final JTypeVar exceptionType = _interface.generify("E", Throwable.class);
final JClass narrowedVisitor = visitor.narrow(retType).narrow(exceptionType);
for (ClassOutline classOutline : classes) {
if (!classOutline.target.isAbstract()) {
// add the bean to the traverser
JMethod traverseMethod = getOutput().method(JMod.PUBLIC, void.class, "traverse");
traverseMethod._throws(exceptionType);