class Bar { } interface Foo { fun xyzzy(x: Any?): String } fun buildFoo(bar: Bar.() -> Unit): Foo { return object : Foo { override fun xyzzy(x: Any?): String { (x as? Bar)?.bar() return "OK" } } } fun box(): String { val foo = buildFoo({}) return foo.xyzzy(Bar()) }