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

  }

}

abstract class B : SortedSet<Any> {
  override val size: Int
    field = size
    override get

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

  }

  override fun first(): Any {
    return 1
  }

  override fun last(): Any {
    return 10
  }

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

  override fun removeAll(elements: Collection<Any>): Boolean {
    return false
  }

}

fun test(a: A, b: B) {
  a.<get-size>() /*~> Unit */
  a.first() /*~> Unit */
  a.last() /*~> Unit */
  a.add(element = 1) /*~> Unit */
  a.add(element = null) /*~> Unit */
  a.remove(element = 1) /*~> Unit */
  a.remove(element = null) /*~> Unit */
  b.<get-size>() /*~> Unit */
  b.first() /*~> Unit */
  b.last() /*~> Unit */
  b.add(element = 1) /*~> Unit */
  b.add(element = null) /*~> Unit */
  b.remove(element = null) /*~> Unit */
}
