ActionEvent.ftl
sealed class ActionEvent(
val type: String,
val value: String
) {
<#assign currentType = "">
<#list events as event>
<#if currentType != event.type>
<#assign currentType = event.type>
<#assign typeValues = events?filter(v -> v.type == currentType)>
class ${currentType?cap_first} {
<#typeValues as typeValue>
object ${typeValue.value?cap_first} : ActionEvent("${typeValue.type}", "${typeValue.value}")
#list>
}
#if>
#list>
}