What you are facing here is a combination of the two known problems -
So, in the ideal world, generic signature of your class would look like this:
class Listeners<ListenerType> where ListenerType: any ListenerProtocol, ListenerType: Referencable {
...
}