fun interface FunIFace { fun call(ic: T): R } fun bar(value: T, f: FunIFace): R { return f.call(value) } class X(val value: Any) fun gfn(a: X): T = bar(a) { it.value as T } fun box() = gfn(X("OK"))