### Question:
AbstractEventList implements EventList<E> { @Override public boolean addAll(Collection<? extends E> values) { return addAll(size(), values); } protected  AbstractEventList(ListEventPublisher publisher); protected  AbstractEventList(); @Override ListEventPublisher getPublisher(); @Override ReadWriteLock getReadWriteLock(); @Override void addListEventListener(ListEventListener<? super E> listChangeListener); @Override void removeListEventListener(ListEventListener<? super E> listChangeListener); @Override abstract int size(); @Override boolean isEmpty(); @Override boolean contains(Object object); @Override Iterator<E> iterator(); @Override Object[] toArray(); @Override T[] toArray(T[] array); @Override boolean add(E value); @Override boolean remove(Object toRemove); @Override boolean containsAll(Collection<?> values); @Override boolean addAll(Collection<? extends E> values); @Override boolean addAll(int index, Collection<? extends E> values); @Override boolean removeAll(Collection<?> values); @Override boolean retainAll(Collection<?> values); @Override void clear(); @Override boolean removeIf(Predicate<? super E> filter); @Override void replaceAll(UnaryOperator<E> operator); @Override boolean equals(Object object); @Override int hashCode(); @Override abstract E get(int index); @Override E set(int index, E value); @Override void add(int index, E value); @Override E remove(int index); @Override int indexOf(Object object); @Override int lastIndexOf(Object object); @Override ListIterator<E> listIterator(); @Override ListIterator<E> listIterator(int index); @Override List<E> subList(int fromIndex, int toIndex); @Override String toString();  }### Answer:
@Test public void addAll_unimplementedSet() { AbstractEventList<String> list = new AbstractEventList<String>() { @Override public int size() { return 1; } @Override public String get(int index) { if (index != 0) throw new IndexOutOfBoundsException("Wha??"); return "Zero"; } @Override public void dispose() {} }; assertFalse(list.updates.isEventInProgress()); try { list.addAll(Arrays.asList("Not","gonna","work")); fail("Shouldn't have worked"); } catch(UnsupportedOperationException ex) { } assertFalse(list.updates.isEventInProgress()); }