// TARGET_BACKEND: JVM // JVM_TARGET: 1.8 // FILE: box.kt class MyMap : JImpl() fun box(): String { val a = MyMap() a.put(42, "OK") return a.entries.iterator().next().value } // FILE: J.java import java.util.*; public interface J extends Map { @Override default Set> entrySet() { return myEntrySet(); } Set> myEntrySet(); } // FILE: JImpl.java import java.util.*; public class JImpl implements J { private final Map delegate = new HashMap<>(); @Override public Set> myEntrySet() { return delegate.entrySet(); } @Override public int size() { return delegate.size(); } @Override public boolean isEmpty() { return delegate.isEmpty(); } @Override public boolean containsKey(Object key) { return delegate.containsKey(key); } @Override public boolean containsValue(Object value) { return delegate.containsValue(value); } @Override public V get(Object key) { return delegate.get(key); } @Override public V put(K key, V value) { return delegate.put(key, value); } @Override public V remove(Object key) { return delegate.remove(key); } @Override public void putAll(Map m) { delegate.putAll(m); } @Override public void clear() { delegate.clear(); } @Override public Set keySet() { return delegate.keySet(); } @Override public Collection values() { return delegate.values(); } }