// TARGET_BACKEND: JVM
// WITH_STDLIB

import kotlin.test.assertEquals

fun foo(block: () -> String) = block()

interface A {
    fun f(): String
    fun g(): String
}

fun box(): String {
    val x: A = object : A {
        private inline fun <reified T : Any> localClassName(): String = T::class.java.getName()
        override fun f(): String = foo { localClassName<String>() }
        override fun g(): String = foo { localClassName<Int>() }
    }

    assertEquals("java.lang.String", x.f())
    assertEquals("java.lang.Integer", x.g())

    return "OK"
}
