I read the Kotlin lang docs and it addresses both of these cases:
Unsafe cast:
val x: String = y as String
Safe cast:
val x: String? = y as? String
but Kotlin seems to allow this as well (note the right most ?:
val x: String? = y as? String?
Is the furthest most ? redundant in this case?