interface X {
  abstract val xs: MutableList<Any>
    abstract get

  abstract fun f(): MutableList<Any> 



}

fun test(x: X, nx: X?) {
  { //BLOCK
    val tmp0_this: X = x
    plusAssign<Int>($receiver = tmp0_this.<get-xs>(), element = 1)
  }
  plusAssign<Int>($receiver = x.f(), element = 2)
  plusAssign<Int>($receiver = x.<get-xs>() as MutableList<Int>, element = 3)
  plusAssign<Int>($receiver = x.f() as MutableList<Int>, element = 4)
  plusAssign<Int>($receiver = CHECK_NOT_NULL<MutableList<Any>>(arg0 = { //BLOCK
    val tmp1_safe_receiver: X? = nx
    when {
      EQEQ(arg0 = tmp1_safe_receiver, arg1 = null) -> null
      true -> tmp1_safe_receiver.<get-xs>()
    }
  }), element = 5)
  plusAssign<Int>($receiver = CHECK_NOT_NULL<MutableList<Any>>(arg0 = { //BLOCK
    val tmp2_safe_receiver: X? = nx
    when {
      EQEQ(arg0 = tmp2_safe_receiver, arg1 = null) -> null
      true -> tmp2_safe_receiver.f()
    }
  }), element = 6)
}

fun MutableList<Any>.testExtensionReceiver() {
  plusAssign<Int>($receiver = <this>, element = 100)
}

abstract class AML : MutableList<Int> {
  constructor() /* primary */ {
    TODO("IrDelegatingConstructorCall")
        /* InstanceInitializerCall */

  }

  fun testExplicitThis() {
    plusAssign<Int>($receiver = <this>, element = 200)
  }

  inner class Inner {
    constructor() /* primary */ {
      TODO("IrDelegatingConstructorCall")
            /* InstanceInitializerCall */

    }

    fun testOuterThis() {
      plusAssign<Int>($receiver = <this>, element = 300)
    }




  }
























}

