Изменения в новых версиях
Условное соответствие протоколу
Синтез Equatable и Hashable
Метод compactMap вместо flatMap
Проверка #canImport
Условие targetEnvironment(simulator)
Рекурсивные ограничения связанных типов