abstract enum class X : Enum<X> {
  private constructor() /* primary */ {
    super/*Enum*/<X>()
    /* <init>() */

  }

  B = B()
  private enum entry class B : X {
    private constructor() /* primary */ {
      super/*X*/()
      /* <init>() */

    }

    val value2: String
      field = "OK"
      get

    override val value: Function0<String>
      field = local fun <anonymous>(): String {
        return <this>.<get-value2>()
      }

      override get

  }

  abstract val value: Function0<String>
    abstract get

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

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

}

fun box(): String {
  return X.B.<get-value>().invoke()
}
