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

fun valuesNullable(map: MutableMap<Int, String?>) {
    map.computeIfAbsent(1) { k -> null }
        // SUCCESS
        // ORIGINAL:    fun computeIfAbsent(K, (K) -> V): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, (Int) -> 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, (K) -> V): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, (Int) -> 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, (K) -> V): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, (Int) -> 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, (K) -> V): V defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun computeIfAbsent(Int, (Int) -> T?): T? defined in kotlin.collections.MutableMap
}
