package java.util; import org.checkerframework.dataflow.qual.Pure; import org.checkerframework.dataflow.qual.SideEffectFree; import org.checkerframework.checker.nullness.qual.EnsuresNonNullIf; import org.checkerframework.checker.nullness.qual.Nullable; // Subclasses of this interface/class may opt to prohibit null elements public interface NavigableSet<E extends @Nullable Object> extends SortedSet<E> { public abstract @Nullable E lower(E a1); public abstract @Nullable E floor(E a1); public abstract @Nullable E ceiling(E a1); public abstract @Nullable E higher(E a1); public abstract @Nullable E pollFirst(); public abstract @Nullable E pollLast(); public abstract Iterator<E> iterator(); public abstract NavigableSet<E> descendingSet(); public abstract Iterator<E> descendingIterator(); @SideEffectFree public abstract NavigableSet<E> subSet(E a1, boolean a2, E a3, boolean a4); @SideEffectFree public abstract NavigableSet<E> headSet(E a1, boolean a2); @SideEffectFree public abstract NavigableSet<E> tailSet(E a1, boolean a2); @SideEffectFree public abstract SortedSet<E> subSet(E a1, E a2); @SideEffectFree public abstract SortedSet<E> headSet(E a1); @SideEffectFree public abstract SortedSet<E> tailSet(E a1); @EnsuresNonNullIf(expression={"pollFirst()", "pollLast()"}, result=false) @Pure public abstract boolean isEmpty(); }