EventKind = distinct int
EventQueue[T] = ref object of RootObj data*: seq[T]
proc `==`(a, b: EventKind): bool {....raises: [], tags: [], forbids: [].}
proc hash(a: EventKind): Hash {....raises: [], tags: [], forbids: [].}
macro eventKindFrom[T](typ: typedesc[T]): EventKind