Function generation / dynamic dispatch

That just means the compile cannot figure out the dependency chain properly, adding some require’s would help that but that would miss ‘new’ ones, or making the module as always dirty would fix it but would have to recompile it every time, or a compiler plugin (as ProtocolEx does) would always work instead too.

Basically the issue is that the Elixir compiler doesn’t know when it needs to recompile a module, which require’s fixes for known things, but for unknown things it doesn’t know when to add the dependency chain.