class B<T : Any?> : LinkedList<T> {
  constructor() /* primary */ {
    super/*LinkedList*/<T>()
    /* <init>() */

  }

}

class C<T : Any?> : LinkedList<T> {
  constructor() /* primary */ {
    super/*LinkedList*/<T>()
    /* <init>() */

  }

  override fun remove(): T {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

  override operator fun removeAt(index: Int): T {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

  override val size: Int
    override get(): Int {
      return super<LinkedList>.<get-size>()
    }

}

class D<T : Any?> : LinkedList<T> {
  constructor() /* primary */ {
    super/*LinkedList*/<T>()
    /* <init>() */

  }

  override fun remove(): T {
    return CHECK_NOT_NULL<Nothing>(arg0 = null)
  }

}

fun test(b: B<Int>, c: C<Int?>, d: D<Int>) {
  b.get(p0 = 1) /*~> Unit */
  b.<get-size>() /*~> Unit */
  b.add(p0 = 1) /*~> Unit */
  b.remove() /*~> Unit */
  b.remove(p0 = 1) /*~> Unit */
  b.removeAt(p0 = 1) /*~> Unit */
  c.get(p0 = 1) /*~> Unit */
  c.<get-size>() /*~> Unit */
  c.add(p0 = 1) /*~> Unit */
  c.remove() /*~> Unit */
  c.remove(p0 = 1) /*~> Unit */
  c.removeAt(index = 1) /*~> Unit */
  d.remove(p0 = 1) /*~> Unit */
}
