fun use(fn: Function1<Int, Unit>) {
  fn.invoke(p1 = 1)
}

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

  }

  fun withVararg(vararg xs: Int): String {
    return ""
  }

  fun testImplicitThis() {
    use(fn = { // BLOCK
      local fun Host.withVararg(p0: Int) {
        receiver.withVararg(xs = [p0])
      }

      <this>::withVararg
    })
  }

  fun testBoundReceiverLocalVal() {
    val h: Host = Host()
    use(fn = { // BLOCK
      local fun Host.withVararg(p0: Int) {
        receiver.withVararg(xs = [p0])
      }

      h::withVararg
    })
  }

  fun testBoundReceiverLocalVar() {
    var h: Host = Host()
    use(fn = { // BLOCK
      local fun Host.withVararg(p0: Int) {
        receiver.withVararg(xs = [p0])
      }

      h::withVararg
    })
  }

  fun testBoundReceiverParameter(h: Host) {
    use(fn = { // BLOCK
      local fun Host.withVararg(p0: Int) {
        receiver.withVararg(xs = [p0])
      }

      h::withVararg
    })
  }

  fun testBoundReceiverExpression() {
    use(fn = { // BLOCK
      local fun Host.withVararg(p0: Int) {
        receiver.withVararg(xs = [p0])
      }

      Host()::withVararg
    })
  }

}
