abstract class SomeClass<T> { private var metadata: T? = null fun getSmth(): T { var res = metadata if (res == null) { res = transform() ...
Указать надо не out M, а : Any весь фокус именно здесь. Твой тип M допускал Any?, поэтому даже в результате смарткаста всё равно мог получиться nullable тип; в моём варианте n...
в kotlin out T по умолчанию будет унаследовано от Any?
Может kotlin надо обновить?