Yeah... I know it's less DSL-ey.  But I was trying for consistency so everything that emitted something looked more or less the same, since you're not annotating the writer, you're emitting an annotation, just like a package.  Either go full-on DSL, or don't. :) 

That said, I have a totally different approach in another branch I'm noodling with (alternative to JavaWriter) that might be cleaner, but it's a separate issue to this fix, which is about the outcome.