fun valuesNotNull(map: MutableMap<Int, String>) {
    map.computeIfAbsent(1) { k -> "new value" }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, Function<in K, out V>): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, Function<in Int, out String>): String defined in kotlin.collections.MutableMap
}

fun valuesNullable(map: MutableMap<Int, String?>) {
    map.computeIfAbsent(1) { k -> null }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, Function<in K, out V>): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, Function<in Int, out String?>): String? defined in kotlin.collections.MutableMap
}

fun <T> valuesT(map: MutableMap<Int, T>, newValue: T) {
    map.computeIfAbsent(1) { k -> newValue }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, Function<in K, out V>): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, Function<in Int, out T>): T defined in kotlin.collections.MutableMap
}

fun <T : Any> valuesTNotNull(map: MutableMap<Int, T>, newValue: T) {
    map.computeIfAbsent(1) { k -> newValue }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, Function<in K, out V>): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, Function<in Int, out T>): T defined in kotlin.collections.MutableMap
}

fun <T : Any> valuesTNullable(map: MutableMap<Int, T?>, newValue: T?) {
    map.computeIfAbsent(1) { k -> newValue }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, Function<in K, out V>): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, Function<in Int, out T?>): T? defined in kotlin.collections.MutableMap
}
