Strażnik typu zdefiniowany przez użytkownika to funkcja, której typ zwracanej wartości to predykat typu (x is T). Gdy zwróci true, kompilator zawęża argument do T w kodzie wywołującym — pozwala to na hermetyzację niestandardowych sprawdzeń czasu wykonania.
{ (): ; }
{ (): ; }
(): pet is {
pet;
}
() {
((pet)) {
pet.();
} {
pet.();
}
}
