import java.util.*; import java.util.concurrent.ConcurrentNavigableMap; import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.util.function.Function; public class MyCNMap extends AbstractMap implements ConcurrentNavigableMap { public MyCNMap clone() { throw new InternalError(); } public native boolean containsKey(Object key); public native V get(Object key); public native V getOrDefault(Object key, V defaultValue); public native V put(K key, V value); public native V remove(Object key); public native boolean containsValue(Object value); public native int size(); public native boolean isEmpty(); public native void clear(); public native V computeIfAbsent(K key, Function mappingFunction); public native V computeIfPresent(K key, BiFunction remappingFunction); public native V compute(K key, BiFunction remappingFunction); public native V merge(K key, V value, BiFunction remappingFunction); public native NavigableSet keySet(); public native NavigableSet navigableKeySet(); public native Collection values(); public native Set> entrySet(); public native ConcurrentNavigableMap descendingMap(); public native NavigableSet descendingKeySet(); public native V putIfAbsent(K key, V value); public native boolean remove(Object key, Object value); public native boolean replace(K key, V oldValue, V newValue); public native V replace(K key, V value); public native Comparator comparator(); public native K firstKey(); public native K lastKey(); public native V putFirst(K k, V v); public native V putLast(K k, V v); public native ConcurrentNavigableMap subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive); public native ConcurrentNavigableMap headMap(K toKey, boolean inclusive); public native ConcurrentNavigableMap tailMap(K fromKey, boolean inclusive); public native ConcurrentNavigableMap subMap(K fromKey, K toKey); public native ConcurrentNavigableMap headMap(K toKey); public native ConcurrentNavigableMap tailMap(K fromKey); public native Map.Entry lowerEntry(K key); public native K lowerKey(K key); public native Map.Entry floorEntry(K key); public native K floorKey(K key); public native Map.Entry ceilingEntry(K key); public native K ceilingKey(K key); public native Map.Entry higherEntry(K key); public native K higherKey(K key); public native Map.Entry firstEntry(); public native Map.Entry lastEntry(); public native Map.Entry pollFirstEntry(); public native Map.Entry pollLastEntry(); public native void forEach(BiConsumer action); public native void replaceAll(BiFunction function); }