enum class Test0 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ } val x: Int field = x get ZERO = Test0() private constructor() { this/*Test0*/(x = 0) } fun values(): Array /* Synthetic body for ENUM_VALUES */ fun valueOf(value: String): Test0 /* Synthetic body for ENUM_VALUEOF */ val entries: EnumEntries get(): EnumEntries /* Synthetic body for ENUM_ENTRIES */ } enum class Test1 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ } val x: Int field = x get ZERO = Test1() ONE = Test1(x = 1) private constructor() { this/*Test1*/(x = 0) } fun values(): Array /* Synthetic body for ENUM_VALUES */ fun valueOf(value: String): Test1 /* Synthetic body for ENUM_VALUEOF */ val entries: EnumEntries get(): EnumEntries /* Synthetic body for ENUM_ENTRIES */ } abstract enum class Test2 : Enum { private constructor(x: Int) /* primary */ { super/*Enum*/() /* () */ } val x: Int field = x get ZERO = ZERO() private enum entry class ZERO : Test2 { private constructor() /* primary */ { super/*Test2*/() /*~> Unit */ /* () */ } override fun foo() { println(message = "ZERO") } } ONE = ONE() private enum entry class ONE : Test2 { private constructor() /* primary */ { super/*Test2*/(x = 1) /*~> Unit */ /* () */ } override fun foo() { println(message = "ONE") } } private constructor() { this/*Test2*/(x = 0) } abstract fun foo() fun values(): Array /* Synthetic body for ENUM_VALUES */ fun valueOf(value: String): Test2 /* Synthetic body for ENUM_VALUEOF */ val entries: EnumEntries get(): EnumEntries /* Synthetic body for ENUM_ENTRIES */ }