dstarcev
fun <B: (B) -> B> rec(arg: B): B { return arg(arg) } class A: (A) -> A { override fun invoke(p1: A) = p1 } fun main(args: Array<String>) { rec(A()) }