open class A { constructor() /* primary */ { super/*Any*/() /* () */ } open fun foo(vararg xs: Int): Int { return 1 } } object Obj : A { private constructor() /* primary */ { super/*A*/() /* () */ } override fun foo(vararg xs: Int): Int { return 1 } } fun testBound(a: A) { use2(fn = { // BLOCK local fun A.foo(p0: Int) { receiver.foo(xs = [p0]) /*~> Unit */ } a::foo }) } fun testObject() { use2(fn = { // BLOCK local fun Obj.foo(p0: Int) { receiver.foo(xs = [p0]) /*~> Unit */ } Obj::foo }) } fun testUnbound() { use1(fn = { // BLOCK local fun foo(p0: A, p1: Int) { p0.foo(xs = [p1]) /*~> Unit */ } ::foo }) } fun use1(fn: Function2) { } fun use2(fn: Function1) { }