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

fun valuesNullable(map: MutableMap<Int, String?>) {
    map.compute(1) { k, v -> v?.let { it + k } }
        // SUCCESS
        // ORIGINAL:    fun compute(K, (K, V?) -> V?): V? defined in kotlin.collections.MutableMap
        // SUBSTITUTED: fun compute(Int, (Int, String?) -> String?): String? defined in kotlin.collections.MutableMap
}

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

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

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