That's correct, the most specialized implementation is used. In the case
where more there is no implementation more specialized than another (two
interfaces are extended to a protocol and a class implements both) then an
arbitrary implementation from the available ones will be selected.
Extending
Is there a way to provide a default (fallback) implementation for a method
defined in a defprotocol directive? I do realize that I could extend the
protocol for type java.lang.Object, but this raises the question about how
protocol implementations with extend are sorted, i.e. how specializations