Just a note that if we want to use this interface for Geany itself, Geany's PluginExtension could be the last one in the chain and serve as a fallback.
That sounds like [these](https://docs.gtk.org/gobject/signals.html).
Of course the real question is "who decides the order in the chain"?