enum class TestFinalEnum1 : Enum<TestFinalEnum1> {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")






  fun values(): Array<TestFinalEnum1> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestFinalEnum1 /* Synthetic body for ENUM_VALUEOF */

}

enum class TestFinalEnum2 : Enum<TestFinalEnum2> {
  private constructor(x: Int) /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  val x: Int
    field = x
    get

  X1 init = TODO("IrEnumConstructorCall")






  fun values(): Array<TestFinalEnum2> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestFinalEnum2 /* Synthetic body for ENUM_VALUEOF */

}

enum class TestFinalEnum3 : Enum<TestFinalEnum3> {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")  fun doStuff() {
  }








  fun values(): Array<TestFinalEnum3> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestFinalEnum3 /* Synthetic body for ENUM_VALUEOF */

}

open enum class TestOpenEnum1 : Enum<TestOpenEnum1> {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")






  fun values(): Array<TestOpenEnum1> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestOpenEnum1 /* Synthetic body for ENUM_VALUEOF */

}

open enum class TestOpenEnum2 : Enum<TestOpenEnum2> {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")  open fun foo() {
  }








  fun values(): Array<TestOpenEnum2> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestOpenEnum2 /* Synthetic body for ENUM_VALUEOF */

}

abstract enum class TestAbstractEnum1 : Enum<TestAbstractEnum1> {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")  abstract fun foo() 







  fun values(): Array<TestAbstractEnum1> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestAbstractEnum1 /* Synthetic body for ENUM_VALUEOF */

}

interface IFoo {
  abstract fun foo() 



}

abstract enum class TestAbstractEnum2 : Enum<TestAbstractEnum2>, IFoo {
  private constructor() /* primary */ {
    TODO("IrEnumConstructorCall")
        /* InstanceInitializerCall */

  }

  X1 init = TODO("IrEnumConstructorCall")







  fun values(): Array<TestAbstractEnum2> /* Synthetic body for ENUM_VALUES */

  fun valueOf(value: String): TestAbstractEnum2 /* Synthetic body for ENUM_VALUEOF */

}

