interface Creator { fun create() : T } class Actor(val code: String = "OK") interface Factory : Creator class MyFactory() : Factory { override fun create(): Actor = Actor() } fun box() : String = MyFactory().create().code