abstract class A : HashSet, SortedSet { constructor() /* primary */ { super/*HashSet*/<@FlexibleNullability Any?>() /* () */ } override fun spliterator(): Spliterator { return CHECK_NOT_NULL(arg0 = null) } } abstract class B : HashSet, SortedSet { constructor() /* primary */ { super/*HashSet*/<@FlexibleNullability Any?>() /* () */ } override fun first(): Any { return 1 } override fun remove(element: Any): Boolean { return true } override fun spliterator(): Spliterator { return CHECK_NOT_NULL(arg0 = null) } } abstract class C : ArrayList, SortedSet { constructor() /* primary */ { super/*ArrayList*/<@FlexibleNullability Any?>() /* () */ } override fun spliterator(): Spliterator { TODO(reason = "Not yet implemented") } } fun test(a: A, b: B, c: C) { a.() /*~> 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 */ a.spliterator() /*~> Unit */ b.() /*~> Unit */ b.first() /*~> Unit */ b.last() /*~> Unit */ b.add(element = 1) /*~> Unit */ b.add(element = null) /*~> Unit */ b.remove(element = 1) /*~> Unit */ b.remove(element = null) /*~> Unit */ b.spliterator() /*~> Unit */ c.() /*~> Unit */ c.first() /*~> Unit */ c.last() /*~> Unit */ c.add(element = 1) /*~> Unit */ c.add(element = null) /*~> Unit */ c.remove(element = 1) /*~> Unit */ c.remove(element = null) /*~> Unit */ c.spliterator() /*~> Unit */ c.removeAt(p0 = 1) /*~> Unit */ }