package java.util; import org.checkerframework.dataflow.qual.Pure; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; import org.checkerframework.checker.nullness.qual.KeyFor; import org.checkerframework.checker.nullness.qual.Nullable; // Subclasses of this interface/class may opt to prohibit null elements public interface NavigableMap<K extends @Nullable Object, V extends @Nullable Object> extends SortedMap<K, V> { public abstract Map. @Nullable Entry<K, V> lowerEntry(K a1); public abstract @Nullable K lowerKey(K a1); public abstract Map. @Nullable Entry<K, V> floorEntry(K a1); public abstract @Nullable K floorKey(K a1); public abstract Map. @Nullable Entry<K, V> ceilingEntry(K a1); public abstract @Nullable K ceilingKey(K a1); public abstract Map. @Nullable Entry<K, V> higherEntry(K a1); public abstract @Nullable K higherKey(K a1); public abstract Map. @Nullable Entry<K, V> firstEntry(); public abstract Map. @Nullable Entry<K, V> lastEntry(); public abstract Map. @Nullable Entry<K, V> pollFirstEntry(); public abstract Map. @Nullable Entry<K, V> pollLastEntry(); public abstract NavigableMap<K, V> descendingMap(); public abstract NavigableSet<@KeyFor("this") K> navigableKeySet(); public abstract NavigableSet<@KeyFor("this") K> descendingKeySet(); public abstract NavigableMap<K, V> subMap(K a1, boolean a2, K a3, boolean a4); public abstract NavigableMap<K, V> headMap(K a1, boolean a2); public abstract NavigableMap<K, V> tailMap(K a1, boolean a2); public abstract SortedMap<K, V> subMap(K a1, K a2); public abstract SortedMap<K, V> headMap(K a1); public abstract SortedMap<K, V> tailMap(K a1); @EnsuresNonNullIf(expression={"firstEntry()", "pollFirstEntry()", "lastEntry()", "pollLastEntry()"}, result=false) @Pure public abstract boolean isEmpty(); }