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

  }

  override fun spliterator(): Spliterator<Any> {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

}

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

  }

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

  override fun spliterator(): Spliterator<Any> {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

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

}

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