abstract 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 removeAt(index: Int): T {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

}

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