typealias EventHandler = (e: E) -> Unit class EventListener() { companion object { inline operator fun invoke( noinline callback: EventHandler, ): EventListener = TODO() } } inline fun EventHandler.withPriority() = EventListener(this) inline fun EventHandler.withDefaultPriority() = withPriority() abstract class Event