var p: Int
  field = 0
  get
  set

val arr: IntArray
  field = intArrayOf(elements = [1, 2, 3])
  get

class C {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  var p: Int
    field = 0
    get
    set

  operator fun get(i: Int): Int {
    return i
  }

  operator fun set(i: Int, value: Int) {
  }

}

object O {
  private constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  var p: Int
    field = 0
    get
    set

  operator fun get(i: Int): Int {
    return i
  }

  operator fun set(i: Int, value: Int) {
  }

}

fun testVarPrefix() {
  var x: Int = 0
  val x1: Int = { // BLOCK
    x = x.inc()
    x
  }
  val x2: Int = { // BLOCK
    x = x.dec()
    x
  }
}

fun testVarPostfix() {
  var x: Int = 0
  val x1: Int = { // BLOCK
    val tmp_0: Int = x
    x = tmp_0.inc()
    tmp_0
  }
  val x2: Int = { // BLOCK
    val tmp_1: Int = x
    x = tmp_1.dec()
    tmp_1
  }
}

fun testPropPrefix() {
  val p1: Int = { // BLOCK
    { // BLOCK
      <set-p>(<set-?> = <get-p>().inc())
      <get-p>()
    }
  }
  val p2: Int = { // BLOCK
    { // BLOCK
      <set-p>(<set-?> = <get-p>().dec())
      <get-p>()
    }
  }
}

fun testPropPostfix() {
  val p1: Int = { // BLOCK
    { // BLOCK
      val tmp_2: Int = <get-p>()
      <set-p>(<set-?> = tmp_2.inc())
      tmp_2
    }
  }
  val p2: Int = { // BLOCK
    { // BLOCK
      val tmp_3: Int = <get-p>()
      <set-p>(<set-?> = tmp_3.dec())
      tmp_3
    }
  }
}

fun testArrayPrefix() {
  val a1: Int = { // BLOCK
    val tmp_4: IntArray = <get-arr>()
    val tmp_5: Int = 0
    tmp_4.set(index = tmp_5, value = tmp_4.get(index = tmp_5).inc())
    tmp_4.get(index = tmp_5)
  }
  val a2: Int = { // BLOCK
    val tmp_6: IntArray = <get-arr>()
    val tmp_7: Int = 0
    tmp_6.set(index = tmp_7, value = tmp_6.get(index = tmp_7).dec())
    tmp_6.get(index = tmp_7)
  }
}

fun testArrayPostfix() {
  val a1: Int = { // BLOCK
    val tmp_8: IntArray = <get-arr>()
    val tmp_9: Int = 0
    val tmp_10: Int = tmp_8.get(index = tmp_9)
    tmp_8.set(index = tmp_9, value = tmp_10.inc())
    tmp_10
  }
  val a2: Int = { // BLOCK
    val tmp_11: IntArray = <get-arr>()
    val tmp_12: Int = 0
    val tmp_13: Int = tmp_11.get(index = tmp_12)
    tmp_11.set(index = tmp_12, value = tmp_13.dec())
    tmp_13
  }
}

fun testClassPropPrefix() {
  val p1: Int = { // BLOCK
    val tmp_14: C = C()
    { // BLOCK
      tmp_14.<set-p>(<set-?> = tmp_14.<get-p>().inc())
      tmp_14.<get-p>()
    }
  }
  val p2: Int = { // BLOCK
    val tmp_15: C = C()
    { // BLOCK
      tmp_15.<set-p>(<set-?> = tmp_15.<get-p>().dec())
      tmp_15.<get-p>()
    }
  }
}

fun testClassPropPostfix() {
  val p1: Int = { // BLOCK
    val tmp_16: C = C()
    { // BLOCK
      val tmp_17: Int = tmp_16.<get-p>()
      tmp_16.<set-p>(<set-?> = tmp_17.inc())
      tmp_17
    }
  }
  val p2: Int = { // BLOCK
    val tmp_18: C = C()
    { // BLOCK
      val tmp_19: Int = tmp_18.<get-p>()
      tmp_18.<set-p>(<set-?> = tmp_19.dec())
      tmp_19
    }
  }
}

fun testClassOperatorPrefix() {
  val a1: Int = { // BLOCK
    val tmp_20: C = C()
    val tmp_21: Int = 0
    tmp_20.set(i = tmp_21, value = tmp_20.get(i = tmp_21).inc())
    tmp_20.get(i = tmp_21)
  }
  val a2: Int = { // BLOCK
    val tmp_22: C = C()
    val tmp_23: Int = 0
    tmp_22.set(i = tmp_23, value = tmp_22.get(i = tmp_23).dec())
    tmp_22.get(i = tmp_23)
  }
}

fun testClassOperatorPostfix() {
  val a1: Int = { // BLOCK
    val tmp_24: C = C()
    val tmp_25: Int = 0
    val tmp_26: Int = tmp_24.get(i = tmp_25)
    tmp_24.set(i = tmp_25, value = tmp_26.inc())
    tmp_26
  }
  val a2: Int = { // BLOCK
    val tmp_27: C = C()
    val tmp_28: Int = 0
    val tmp_29: Int = tmp_27.get(i = tmp_28)
    tmp_27.set(i = tmp_28, value = tmp_29.dec())
    tmp_29
  }
}

fun testObjectPropPrefix() {
  val p1: Int = { // BLOCK
    val tmp_30: O = O
    { // BLOCK
      tmp_30.<set-p>(<set-?> = tmp_30.<get-p>().inc())
      tmp_30.<get-p>()
    }
  }
  val p2: Int = { // BLOCK
    val tmp_31: O = O
    { // BLOCK
      tmp_31.<set-p>(<set-?> = tmp_31.<get-p>().dec())
      tmp_31.<get-p>()
    }
  }
}

fun testObjectPropPostfix() {
  val p1: Int = { // BLOCK
    val tmp_32: O = O
    { // BLOCK
      val tmp_33: Int = tmp_32.<get-p>()
      tmp_32.<set-p>(<set-?> = tmp_33.inc())
      tmp_33
    }
  }
  val p2: Int = { // BLOCK
    val tmp_34: O = O
    { // BLOCK
      val tmp_35: Int = tmp_34.<get-p>()
      tmp_34.<set-p>(<set-?> = tmp_35.dec())
      tmp_35
    }
  }
}

fun testObjectOperatorPrefix() {
  val a1: Int = { // BLOCK
    val tmp_36: O = O
    val tmp_37: Int = 0
    tmp_36.set(i = tmp_37, value = tmp_36.get(i = tmp_37).inc())
    tmp_36.get(i = tmp_37)
  }
  val a2: Int = { // BLOCK
    val tmp_38: O = O
    val tmp_39: Int = 0
    tmp_38.set(i = tmp_39, value = tmp_38.get(i = tmp_39).dec())
    tmp_38.get(i = tmp_39)
  }
}

fun testObjectOperatorPostfix() {
  val a1: Int = { // BLOCK
    val tmp_40: O = O
    val tmp_41: Int = 0
    val tmp_42: Int = tmp_40.get(i = tmp_41)
    tmp_40.set(i = tmp_41, value = tmp_42.inc())
    tmp_42
  }
  val a2: Int = { // BLOCK
    val tmp_43: O = O
    val tmp_44: Int = 0
    val tmp_45: Int = tmp_43.get(i = tmp_44)
    tmp_43.set(i = tmp_44, value = tmp_45.dec())
    tmp_45
  }
}
