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

  }

}

class B : Java1 {
  override val size: Int
    field = size
    override get

  constructor(size: Int) /* primary */ {
    super/*Java1*/()
    /* <init>() */

  }

  override fun add(element: Any?): Boolean {
    return true
  }

  override operator fun iterator(): MutableIterator<Any> {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

}

fun test(a: A, b: B) {
  a.<get-size>() /*~> Unit */
  a.add(element = 1) /*~> Unit */
  a.add(element = null) /*~> Unit */
  a.first<@FlexibleNullability Any?>() /*~> Unit */
  a.remove(element = 1) /*~> Unit */
  a.removeAll(elements = listOf<Nothing?>(element = null)) /*~> Unit */
  a.isNotEmpty<@FlexibleNullability Any?>() /*~> Unit */
  b.<get-size>() /*~> Unit */
  b.add(element = 1) /*~> Unit */
  b.add(element = null) /*~> Unit */
  b.first<@FlexibleNullability Any?>() /*~> Unit */
  b.remove(element = 1) /*~> Unit */
  b.removeAll(elements = listOf<Nothing?>(element = null)) /*~> Unit */
  b.isNotEmpty<@FlexibleNullability Any?>() /*~> Unit */
}
