Идея-то простая: использовать всю мощь так сказать POP’a. Но получается пока что только вот с такими компромиссами. Я хочу, чтобы дефолтный метод был доступен только при определенных комбинациях типов (что и указано в экстеншоне к протоколу). Если не совпадает ок - реализуй сам. Все проверки происходят статически. Тут скорее вопрос в том, почему компилятор свифта не позволяет использовать неноминальные типы (протокол) в качестве типа, который определяет значение ассоциированного типа.