public interface List {
public int size();
public boolean isEmpty();
public boolean isFirst(Position p) throws InvalidPositionException;
public boolean isLast(Position p) throws InvalidPositionException;
public Position first() throws EmptyContainerException;
public Position last() throws EmptyContainerException;
public Position before (Position p)
throws InvalidPositionException, BoundaryViolationException;
public Position after (Position p)
throws InvalidPositionException, BoundaryViolationException;
public Position insertBefore (Position p, Object element)
throws InvalidPositionException;
public Position insertAfter (Position p, Object element)
throws InvalidPositionException;
public Position insertFirst(Object element);
public Position insertLast(Object element);
public Object remove(Position p) throws InvalidPositionException;
public Object replaceElement (Position p, Object element)
throws InvalidPositionException;
public void swapElements (Position a, Position b)
throws InvalidPositionException;
}