package com.dmdirc.ktirc.model class IrcMessage(val tags: Map, val prefix: ByteArray?, val command: String, val params: List) sealed class MessageTag(val name: String) { object AccountName: MessageTag("account") object ServerTime : MessageTag("time") } val messageTags: Map by lazy { MessageTag::class.nestedClasses.map { it.objectInstance as MessageTag }.associateBy { it.name } }