All those things have an inject annotation, you don't collect them anyways into some kind of AST? Micronaut does this by generating metadata for each annotated class for all common introspections needed (instead of using reflection - that's how it's compatible with Graalvm...)