It's necessary for functions with generics: constraint system ignores nullability divergence, the error checks are made afterwards, the auto cast check should be made similarly.