trait Addable { fun add(s: String): Boolean = true } class C : Addable, List { override fun size(): Int = null!! override fun isEmpty(): Boolean = null!! override fun contains(o: Any?): Boolean = null!! override fun iterator(): Iterator = null!! override fun containsAll(c: Collection): Boolean = null!! override fun get(index: Int): String = null!! override fun indexOf(o: Any?): Int = null!! override fun lastIndexOf(o: Any?): Int = null!! override fun listIterator(): ListIterator = null!! override fun listIterator(index: Int): ListIterator = null!! override fun subList(fromIndex: Int, toIndex: Int): List = null!! } fun box(): String { try { val a = C() if (!a.add("")) return "Fail 1" if (!(a as Addable).add("")) return "Fail 2" if (!(a as MutableList).add("")) return "Fail 3" return "OK" } catch (e: UnsupportedOperationException) { return "Fail: no stub method should be generated" } }