class A : Java1 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

}

class B : Java1 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

  override fun bar(): MutableList<Any> {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

  override fun foo(a: MutableList<Any?>) {
  }

}

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

  }

  override fun foo(a: List<*>?) {
  }

}

fun test(a: A, b: B, c: C) {
  val k: List<Any?> = a.bar() /*!! List<*> */
  a.foo(a = null)
  a.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k2: List<Any> = b.bar()
  b.foo(a = mutableListOf<Any?>(elements = [null]))
  c.foo(a = null)
  c.foo(a = listOf<Nothing?>(element = null))
}
