The GenerationContext keeps generated classes around so that multiple processors (or multiple round of the same processor) get a chance to contribute to the same file if necessary.

The Default implementation has a writeGeneratedContent that must be called at the end. We thought that it might be more obvious to make the context extend from Closeable so that a method that does this must be implemented.

The problem is withName that creates copies of the context with specialized naming convention. We don't really want those to be closed as the "main" context is still being processed. It's also unclear if we want to prevent users to use the context once it has been closed.

Comment From: snicoll

I've experimented with this and this is more noise than I thought it would be. The withName that gives you another instance isn't really Closeable as we expect the root would be closed at the end and flush all resources. That said, it is an interesting exercise as things are a bit undocumented at the moment and anyone could call writeGeneratedContext on a child (with a cast though) and that would write everything.

I think we'd be better off with some additional documentation.

Comment From: snicoll

This has been superseded by #28877