package fr.username404.snowygui interface EventSnowy { val type: String @SafeVarargs fun fire(vararg args: T?) { get(type).forEach { it(args) } } companion object { operator fun get(key: String): MutableSet = eventMap.getOrPut(key, ::mutableSetOf) private val eventMap: MutableMap> = mutableMapOf() } } internal typealias argsLambda = (args: Array<*>) -> Unit