Protocol 'XYZ' can only be used as a generic constraint because it has Self or associated type requirements. ***Oh no, what now?***