Actually, I take that back.  There's nothing stopping us from emitting other members as well, right?  static classes and the like.

What exactly *does* this get to write?  The entire interface?  Everything after imports?

Maybe this interface (or abstract class) should just have a single method:

```java
void emitService(Service service, Set<String> importedTypes) throws IOException;
```