Определяемая пользователем защита типа — это функция, тип возвращаемого значения которой является предикатом типа (x is T). Когда она возвращает true, компилятор сужает аргумент до T в вызывающем коде — позволяя инкапсулировать пользовательские проверки во время выполнения.
