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

  }

}

abstract class B : Java1, SortedSet<Int>, MutableSet<Int> {
  override val size: Int
    field = size
    override get

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

  }

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

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

}

abstract class C : HashSet<Int>, Java1, MutableSet<Int> {
  constructor() /* primary */ {
    super/*HashSet*/<Int>()
    /* <init>() */

  }

}

class D : HashSet<Int>, Java1, MutableSet<Int> {
  constructor() /* primary */ {
    super/*HashSet*/<Int>()
    /* <init>() */

  }

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

}

abstract class E : LinkedHashSet<Int>, Java1, SortedSet<Int> {
  constructor() /* primary */ {
    super/*LinkedHashSet*/<Int>()
    /* <init>() */

  }

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

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

}

abstract class F : Java2, Java1 {
  constructor() /* primary */ {
    super/*Java2*/()
    /* <init>() */

  }

}

abstract class G : Java2, Java1 {
  override val size: Int
    field = size
    override get

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

  }

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

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

}

abstract class H : KotlinClass, Java1 {
  constructor() /* primary */ {
    super/*KotlinClass*/()
    /* <init>() */

  }

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

}

abstract class I : Java1, KotlinInterface {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

abstract class J : Java3, Java1 {
  constructor() /* primary */ {
    super/*Java3*/()
    /* <init>() */

  }

}

open class KotlinClass : HashSet<Int> {
  constructor() /* primary */ {
    super/*HashSet*/<Int>()
    /* <init>() */

  }

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

}

interface KotlinInterface : SortedSet<Int> {
}

fun test(a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J) {
  a.<get-size>() /*~> Unit */
  a.first() /*~> Unit */
  a.remove(element = null) /*~> Unit */
  a.remove(element = 1) /*~> Unit */
  a.add(element = null) /*~> Unit */
  a.add(element = 1) /*~> Unit */
  b.<get-size>() /*~> Unit */
  b.first() /*~> Unit */
  b.remove(element = 1) /*~> Unit */
  b.add(element = 1) /*~> Unit */
  c.<get-size>() /*~> Unit */
  c.remove(element = 1) /*~> Unit */
  c.add(element = 1) /*~> Unit */
  d.<get-size>() /*~> Unit */
  d.add(element = 1) /*~> Unit */
  d.remove(element = 1) /*~> Unit */
  e.<get-size>() /*~> Unit */
  e.first() /*~> Unit */
  e.remove(element = null) /*~> Unit */
  e.remove(element = 1) /*~> Unit */
  e.add(element = 1) /*~> Unit */
  e.add(element = null) /*~> Unit */
  f.<get-size>() /*~> Unit */
  f.add(element = 1) /*~> Unit */
  f.add(element = null) /*~> Unit */
  f.remove(element = 1) /*~> Unit */
  f.remove(element = null) /*~> Unit */
  g.<get-size>() /*~> Unit */
  g.add(element = null) /*~> Unit */
  g.add(element = 1) /*~> Unit */
  g.remove(element = null) /*~> Unit */
  g.remove(element = 1) /*~> Unit */
  h.<get-size>() /*~> Unit */
  h.add(p0 = 1) /*~> Unit */
  h.remove(element = 1) /*~> Unit */
  h.remove(o = null) /*~> Unit */
  i.<get-size>() /*~> Unit */
  i.add(element = null) /*~> Unit */
  i.add(element = 1) /*~> Unit */
  i.remove(element = 1) /*~> Unit */
  i.remove(element = null) /*~> Unit */
  j.<get-size>() /*~> Unit */
  j.add(p0 = null) /*~> Unit */
  j.add(p0 = 1) /*~> Unit */
  j.remove(p0 = null) /*~> Unit */
  j.remove(p0 = 1) /*~> Unit */
}
