Хочется подмешать дефолтный функционал к определенному протоколу, основываясь на типе его ассоциированного типа. Не могу понять, чем обосновано такое ограничение? Решение тут, конечно, для viewModel указывать конкретный тип, а не протокол. Но это нарушит solid, ибо будет зависимость от конкретной реализации