// FILE: J.java import org.jetbrains.annotations.NotNull; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class J extends MyList { @Override public int getSize() { return 55; } @Override public int lastIndexOf(String s) { return 0; } @Override public int indexOf(String s) { return 0; } @Override public boolean contains(String s) { return true; } @Override public boolean isEmpty() { return false; } @NotNull @Override public Iterator iterator() { return null; } @Override public boolean containsAll(Collection c) { return false; } @Override public String get(int index) { return null; } @Override public List subList(int i, int i1) { return super.subList(i, i1); } @Override public ListIterator listIterator(int i) { return super.listIterator(i); } @Override public ListIterator listIterator() { return super.listIterator(); } } // FILE: test.kt abstract class MyList : List class ListImpl : J() { override val size: Int get() = super.size + 1 } fun box(): String { val impl = ListImpl() if (impl.size != 56) return "fail 1" if (!impl.contains("abc")) return "fail 2" val l: List = impl if (l.size != 56) return "fail 3" if (!l.contains("abc")) return "fail 4" val anyList: List = impl as List if (anyList.size != 56) return "fail 5" if (!anyList.contains("abc")) return "fail 6" if (anyList.contains(1)) return "fail 7" if (anyList.contains(null)) return "fail 8" return "OK" }