FLUID-5249 has left still further unexploded ammunition, in the form of the raw use of "fluid.expandImmediate" in fluid.mergeListeners (and indeed in numerous other places). The comments on this function states "Main pathway for freestanding material that is not part of a component's options" which is a possibly helpful warning but reflects an incomplete understanding of the possible workflows this material might be in.
It seems that the core logic that we have within "fluid.expander.fetch", with the opportunistic logic detecting whether there is a "fit" underway, needs to be hoisted up into all cases of expansion - even if this involves a loss of performance in our recently optimised invokers and listeners. These all assume that the component tree is static at the time of dispatch - which might be true for listeners but is not true for all cases of invokers - at least in the somewhat rare case of a dynamic grade which is dispensed from an invoker.
Certainly the case of an IoC-qualified listener key is pretty blatant and we need to fix it - although the framework rewrite for FLUID-4925 would be preferable.