package java.util;
import org.checkerframework.dataflow.qual.Pure;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.checkerframework.checker.nullness.qual.PolyNull;
// Subclasses of this interface/class may opt to prohibit null elements
public interface Set<E extends @Nullable Object> extends Collection<E> {
@Pure public abstract int size();
@Pure public abstract boolean isEmpty();
@Pure public abstract boolean contains(@Nullable Object a1);
public abstract Iterator<E> iterator();
public abstract Object [] toArray();
public abstract <T> @Nullable T @PolyNull [] toArray(T @PolyNull [] a1);
public abstract boolean add(E a1);
public abstract boolean remove(@Nullable Object a1);
@Pure public abstract boolean containsAll(Collection<?> a1);
public abstract boolean addAll(Collection<? extends E> a1);
public abstract boolean retainAll(Collection<?> a1);
public abstract boolean removeAll(Collection<?> a1);
public abstract void clear();
@Pure public abstract boolean equals(@Nullable Object a1);
@Pure public abstract int hashCode();
}