in src/module-utils.ts [96:115]
function analyzeTypeName(type: reflect.Type): TypeNameParts {
// Need to divide the namespace into submodule and non-submodule
// For type 'asm.b.c.d.Type' contains ['asm', 'b', 'c', 'd']
const nsParts = type.fqn.split('.').slice(0, -1);
const moduleFqns = new Set(type.assembly.allSubmodules.map((s) => s.fqn));
let split = nsParts.length;
while (split > 1 && !moduleFqns.has(nsParts.slice(0, split).join('.'))) {
split--;
}
return {
assemblyName: type.assembly.name,
submoduleNameParts: nsParts.slice(1, split),
namespaceNameParts: nsParts.slice(split, nsParts.length),
simpleName: type.name,
};
}