class EvictingBoundedList implements Iterable<T>, Serializable {

	@Nonnull
	@Override
	public Iterator<T> iterator() {
		return new Iterator<T>() {

			int pos = 0;
			final long oldModCount = modCount;

			@Override
			public boolean hasNext() {
				return pos < count;
			}

			@Override
			public T next() {
				if (oldModCount != modCount) {
					throw new ConcurrentModificationException();
				}
				if (pos < count) {
					return get(pos++);
				} else {
					throw new NoSuchElementException("Iterator exhausted.");
				}
			}

			@Override
			public void remove() {
				throw new UnsupportedOperationException("Read-only iterator");
			}
		};
	}

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

}