Assemblers receive a callback to the ModuleAssembly they are supposed to configure. They can use this to register objects, composites, services etc. and the additional metadata that may exist for these artifacts.
An Assembler may create new Modules by calling {@link org.qi4j.bootstrap.ModuleAssembly#layer()} andthen {@link LayerAssembly#module(String)} (String)}.This allows an Assembler to bootstrap an entire Layer with more Modules.
@param module the Module to assemble
@throws AssemblyException thrown if the assembler tries to do something illegal