Функция протокола возвращает Self

У меня есть протокол P, который возвращает копию объекта: protocol P { func copy() -> Self } и класс C, реализующий P: class C : P { func copy() -> Self { return C() } } Однако, если я помещаю возвращаемое значение, Selfя получаю следующую ошибку: Невозможно преобразовать возвращаемое...