Kotlin smart casts: when do they work and when do they not? | LetsGit.IT