// TARGET_BACKEND: JVM

// WITH_STDLIB

interface In<in E>
open class A : In<A>
open class B : In<B>

inline fun <reified T : Any> select(x: T, y: T) = T::class.java.simpleName

// This test checks mostly that no StackOverflow happens while mapping type argument of select-call (In<A & B>)
// See KT-10972
fun foo(): String = select(A(), B())

fun box(): String {
    if (foo() != "In") return "fail"
    return "OK"
}
