@raulraja so there is maybe one way that I was thinking of... we can generate an inline extension function that users would call in their code, right? the trick would be to create an anonymous class inside that function, so every time the function is inlined a new class gets generated and we could search for all classes like that (they could even be annotated), find their "true" compile-time type, check that we have providers for it, and in the bytecode swap the "fake" inlined function with the actual provider invocation!