ModuleAsPackageTransformer
Presents each KSP-generated wrapper object as its own synthetic subpackage of the source package, so the resulting documentation groups a module's functions on the same page under a "Layout", "Text", ... section instead of scattering them across the parent package.
The wrapper structure is fixed: object <Name> { val Module = moduleOf(...); public fun ... }. We recognize it structurally (an object carrying a QuarkdownModule-typed property) and promote its functions into a synthetic <original.package>.module.<Name> package. The wrapper object itself is dropped from the original package so it does not appear twice.