class Works() : jet.Function0() { public override fun invoke():Object { return "Works" as Object } } class Broken() : jet.Function0() { public override fun invoke():String { return "Broken" } } fun main(args: Array) { val works1: ()->Object = Works(); works1() val broken1: ()->String = Broken(); broken1() }