Enumeration(name: String, kClass: KClass<T>, values: List<EnumValueDef<T>>, description: String? = null)