// SCOPE_DUMP: SomeMap:containsKey;containsValue;get;remove, MyMap:containsKey;containsValue;get // FILE: MyBaseMap.java public interface MyBaseMap { boolean containsKey(Object key); } // FILE: MyMap.java public interface MyMap extends MyBaseMap { @Override boolean containsKey(Object key); boolean containsValue(Object key); V2 get(K2 key); } // FILE: SomeMap.java import java.util.Map; public abstract class SomeMap implements Map, MyMap { @Override public abstract boolean containsKey(Object key); @Override public abstract V3 remove(Object key); } // FILE: main.kt fun test(map: SomeMap) { map.containsKey(1) // ok map.containsKey("") // error map.containsValue("") // ok map.containsValue(1) // error map.get(1) // ok map.get("") // error map.remove(1) // ok map.remove("") // error }