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

  }

}

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

  }

  override fun remove(element: T): Boolean {
    return true
  }

  override operator fun removeAt(index: Int): T {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

  override val size: Int
    override get(): Int {
      return 5
    }

}

fun test(a: A<Int>, b: B<Int?>) {
  a.<get-size>() /*~> Unit */
  a.add(p0 = null) /*~> Unit */
  a.add(p0 = 1) /*~> Unit */
  a.add(p0 = 2, p1 = 2)
  a.get(p0 = 1) /*~> Unit */
  a.remove(p0 = 1) /*~> Unit */
  a.removeAt(p0 = 1) /*~> Unit */
  b.<get-size>() /*~> Unit */
  b.add(p0 = null) /*~> Unit */
  b.add(p0 = 2) /*~> Unit */
  b.add(p0 = 2, p1 = 2)
  b.get(p0 = 1) /*~> Unit */
  b.remove(element = null) /*~> Unit */
  b.removeAt(index = 1) /*~> Unit */
}
