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

  }

}

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

  }

  override fun bar(): List<*> {
    return mutableListOf<Int>(elements = [2])
  }

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

  override var a: List<*>
    override get(): List<*> {
      return mutableListOf<Int>(elements = [2])
    }
    override set(value: List<*>) {
    }

}

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

  }

}

class D : Java1, KotlinInterface {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

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

  override var a: List<*>
    override get(): List<*> {
      return mutableListOf<Int>(elements = [2])
    }
    override set(value: List<*>) {
    }

}

class E : Java1, KotlinInterface2 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

}

class F : Java1, KotlinInterface2 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

  override fun bar(): List<Any?> {
    return super<Java1>.bar()
  }

}

class G : Java1, Java3 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

}

class H : Java1, Java3 {
  constructor() /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

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

}

abstract class I : Java4 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

class J : Java4 {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  override fun bar(): MutableList<Any?> {
    return mutableListOf<Any?>(elements = [3])
  }

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

}

open class KotlinClass {
  open var a: List<*>
    field = mutableListOf<String>(elements = ["1"])
    open get
    open set

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

  }

  open fun bar(): List<*> {
    return mutableListOf<String>(elements = ["1"])
  }

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

}

interface KotlinInterface {
  abstract fun bar(): List<Any?>

  abstract fun foo(a: List<Any?>)

  abstract var a: List<Any?>
    abstract get
    abstract set

}

interface KotlinInterface2 : Java2 {
}

fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J) {
  a.bar() /*~> Unit */
  a.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k: List<Any?> = a.bar()
  b.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k2: List<Any?> = b.bar()
  c.foo(a = listOf<Nothing?>(element = null))
  val k3: List<Any?> = c.bar()
  d.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k4: List<Any?> = d.bar()
  e.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k5: List<Any?> = e.bar()
  f.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k6: List<Any?> = f.bar()
  g.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k7: List<Any?> = g.bar()
  h.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k8: List<Any?> = h.bar()
  i.foo(a = mutableListOf<Nothing?>(elements = [null]))
  val k9: List<Any?> = i.bar() /*!! List<*> */
  j.foo(a = mutableListOf<Any?>(elements = [null]))
  val k10: List<Any?> = j.bar()
}
