class EvictingBoundedList implements Iterable<T>, Serializable {

	public T set(int index, T element) {
		Preconditions.checkArgument(index >= 0 && index < count);
		++modCount;
		if (isDroppedIndex(index)) {
			return getDefaultElement();
		} else {
			int idx = index % elements.length;
			T old = accessInternal(idx);
			elements[idx] = element;
			return old;
		}
	}

	public  EvictingBoundedList(int sizeLimit);
	public  EvictingBoundedList(EvictingBoundedList<T> other);
	public  EvictingBoundedList(int sizeLimit, T defaultElement);

}