package java.util;
import checkers.igj.quals.*;
@I
public interface List<E> extends @I Collection<E> {
public abstract int size() @ReadOnly ;
public abstract boolean isEmpty() @ReadOnly ;
public abstract boolean contains(@ReadOnly Object a1) @ReadOnly;
public abstract @I Iterator<E> iterator() @ReadOnly;
public abstract Object[] toArray() @ReadOnly;
public abstract <T> T[] toArray(T @Mutable [] a1) @ReadOnly;
public abstract boolean add(E a1) @Mutable;
public abstract boolean remove(@ReadOnly Object a1) @Mutable;
public abstract boolean containsAll(@ReadOnly Collection<?> a1) @ReadOnly;
public abstract boolean addAll(@ReadOnly Collection<? extends E> a1) @Mutable;
public abstract boolean addAll(int a1, @ReadOnly Collection<? extends E> a2) @Mutable;
public abstract boolean removeAll(@ReadOnly Collection<?> a1) @Mutable;
public abstract boolean retainAll(@ReadOnly Collection<?> a1) @Mutable;
public abstract void clear() @Mutable;
public abstract boolean equals(@ReadOnly Object a1) @ReadOnly ;
public abstract int hashCode() @ReadOnly;
public abstract E get(int a1) @ReadOnly;
public abstract E set(int a1, E a2) @Mutable;
public abstract void add(int a1, E a2) @Mutable;
public abstract E remove(int a1) @Mutable;
public abstract int indexOf(@ReadOnly Object a1) @ReadOnly;
public abstract int lastIndexOf(@ReadOnly Object a1) @ReadOnly;
public abstract @I ListIterator<E> listIterator() @ReadOnly;
public abstract @I ListIterator<E> listIterator(int a1) @ReadOnly;
public abstract @I List<E> subList(int a1, int a2) @ReadOnly ;
}