Class-constrained protocol extension

There are a few previous threads on the topic:

(and possibly more...)