detect

private open fun detect(target: String): Int

Which chat-entry shape [target] has, read from the CLASS FILE — not through the bytecode provider. What this MC version DECLARES is a property of the shipped bytes, so nothing here needs the transform pipeline, and staying out of it is the point: this runs during config preparation, nested inside another class's transform with our own prepare() still on the stack. Asking ModLauncher for transformed bytecode there re-enters the mixin processor at a moment when our own mixins are not yet registered; asking it for UNtransformed bytecode is refused outright.