### Question:
ListPM extends AbstractPM implements IListPM<T> { public ListIterator<T> listIterator(final int index) { return new ListIterator<T>() { int next = index; int last = NONE; public void add(T o) { throw new UnsupportedOperationException("'add' ist not supported by this ListIterator"); } public boolean hasNext() { return next < entries.size(); } public boolean hasPrevious() { return next - 1 >= 0; } public T next() { T result = entries.get(next).element; last = next; next++; return result; } public int nextIndex() { return next; } public T previous() { int previous = next - 1; T result = entries.get(previous).element; last = previous; next--; return result; } public int previousIndex() { return next - 1; } public void remove() { removeAt(last); next = last; last = NONE; } public void set(T o) { throw new UnsupportedOperationException("'set' ist not supported by this ListIterator"); } }; } ListPM();  ListPM(int initialCapacity);  ListPM(ArrayList<Entry> list); protected  ListPM(List<Entry> list); Sorter getSorter(); void setSorter(Sorter sorter); boolean isRevalidateElementsOnChangeEnabled(); void setRevalidateElementsOnChangeEnabled(boolean enabled); void addListListener(ListListener l); void removeListListener(ListListener l); void revalidateElements(); void replace(T oldElement, T newElement); void replace(int index, T newElement); void add(T element); void add(int index, T element); void addAll(Collection<T> col); boolean contains(T element); boolean containsAll(Collection<T> col); void clear(); boolean removeAll(Collection<? extends T> col); boolean remove(T element); T removeAt(int index); void swap(int indexA, int indexB); void swap(T elemA, T elemB); void reverse(); void sortBy(boolean ascending, Path... paths); void sortBy(Collection<SortKey> newSortKeys); void sortBy(SortKey... newSortKeys); Collection<SortKey> getSortKeys(); T getAt(int index); Collection<T> toCollection(); Object[] toArray(); Selection<T> getSelection(); int indexOf(T element); int[] indicesOf(Collection<? extends T> col); int size(); boolean isEmpty(); Iterator<T> iterator(); ListIterator<T> listIterator(final int index);  }### Answer:
@Test public void listIterator() { ListIterator<DummyPM> iter = list.listIterator(0); assertNotNull("iter", iter); for (int i = 0; i < this.size; ++i) { assertEquals("iter.hasNext()", true, iter.hasNext()); DummyPM elem = iter.next(); assertEquals("elem", list.getAt(i), elem); } assertEquals("iter.hasNext()", false, iter.hasNext()); }