Registry{ void registerEntitiesAsTypes() bypassing ParentEntity to Entity { (@ Registry registry; @) before Registry (@ registry = host; @) before Entity (@ registry.registerAsType(host); @) } void registerAsType(Entity entity) to {GeneratedCodeCategory,NonGeneratedCodeCategory} { (@ Registry registry; @) before Registry (@ registry = host; @) before CodeCategory (@ String className = host.className(entity); File headerFile = host.headerFile(entity); DefinedType type = new SimpleClassType( new TypeName(className), new HeaderFile(headerFile.getName())); // I would really like to let this exception pass on through // but I have no way to declare that the generated visitor method // throws a ParseException. try { registry.add(type); } catch(ParseException e){ System.err.println(e.getMessage()); System.exit(1); } @) } }