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

  }

}

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

  }

}

class C : Java4<Any> {
  constructor() /* primary */ {
    super/*Java4*/<@FlexibleNullability Any?>()
    /* <init>() */

  }

}

class D : Java2 {
  constructor() /* primary */ {
    super/*Java2*/()
    /* <init>() */

  }

  override fun foo(t: Number?) {
  }

}

class E : Java3 {
  constructor() /* primary */ {
    super/*Java3*/()
    /* <init>() */

  }

  override fun foo(t: Double?) {
  }

}

class F : Java4<Any> {
  constructor() /* primary */ {
    super/*Java4*/<@FlexibleNullability Any?>()
    /* <init>() */

  }

  override fun foo(t: Any?) {
  }

}

fun test(a: A, b: B, c: C, d: D, e: E, f: F) {
  a.foo(t = 1)
  a.foo(t = 1.1)
  a.foo(t = null)
  a.bar() /*~> Unit */
  b.foo(t = 1.2)
  b.foo(t = null)
  b.bar() /*~> Unit */
  c.foo(t = null)
  c.foo(t = "")
  c.foo(t = 1)
  c.bar() /*~> Unit */
  d.foo(t = null)
  d.foo(t = 1)
  d.bar() /*~> Unit */
  e.foo(t = 1.1)
  e.foo(t = null)
  e.bar() /*~> Unit */
  f.foo(t = 2)
  f.foo(t = "")
  f.bar() /*~> Unit */
}
