Module support is more natural if we can just supply our nested modules via the constructor.
Out of the box we get defaults and easy injection in tests.
Either convention based, for example, all data classes are parsed as modules parameter.type.jvmErasure.isData.
Or with annotation @Module