Calling module specific method with same type signature (AbstractFFT, FFTW, FFTA)

The problem is ultimately that the AbstractFFTs.jl interface does type piracy by design, which is a recipe for disaster precisely because of this:

I don’t know of a solution other than, say, using your own fork of FFTA.jl where you strip out the AbstractFFTs.jl dependency and implement a separate FFTA.plan_fft.

As mentioned in the issue, the proper solution would be adding some kind of backend token similar to the Auto<adbackend> types used by autodiff interface packages. Since FFT is so fundamental, such a breaking change would probably cause a lot of churn across the ecosystem, so likely a lot of people would be resistant to the idea, but what are you going to do? As your example shows, the current situation is not tenable.