kittinunf
public fun <T, U> T?.map(f: (T) -> U?): U? { when (this) { null -> return null else -> return f(this) } }