Всем привет. Вопрос по swift. Есть у нас протоколы, есть возможность его расширить дефолтной реализацией, а также есть возможность использовать расширение для конкретных типов используя констреинт типа Self: SomeType и Self == SomeType. Отличаются эти два подхода тем, что используются для подклассов и конкретного класса или структуры соотв. А вопрос в том, зачем в последнем случае нужно записывать обращение через self к полям типа, для которого реализуется расширение протокола? Если есть статейки по этой теме - буду благодарен.