Generating multiple assemblies inside a code generator must become a first class citizen given that there are still bugs in .NET 4.5 that will cause the creation of new types to slow down significantly with the number of types created in an assembly. Only about 100 types (with 150 types being the reasonable maximum) can be efficiently created for each assembly.
IGeneratedCodeFlusher.FlushAssembliesToDisk should return a string array instead of a scalar value.
A new ModuleContext needs to be created after a pre-determined number of types has been reached.
The logic should (must?) support switching to a new assembly also for additional types but not when the additional type is generated in the context of an assembled type.
The new implementation also has to deal with the DebugInfoGenerator. Possibly, each assembly needs its own instance.
Evaluate if maybe we can use multiple modules for each assembly and still avoid the performance penalty. This could make the CodeGenerator API simpler.