interface Parser { fun fromJson(json: String): A } inline fun gsonParser(): Parser = object : Parser { val gson = Gson() override fun fromJson(json: String): A = gson.fromJson(json, A::class.java) }