import java.util.*; public class JLS_8_1_3_InnerClasses_25<E> { public JLS_8_1_3_InnerClasses_25(String x) { System.out.println("JLS_8_1_3_InnerClasses_25 called: " + x); } private class Itr implements Iterator<E> { /** * Index of element to be returned by subsequent call to next. */ int cursor = 0; public boolean hasNext() { return cursor != 0; } public E next() { return null; } public void remove() { } } private class ListItr extends Itr implements ListIterator<E> { ListItr(int index) { System.out.println("LIST ITR CALLED"); cursor = index; } public boolean hasPrevious() { return cursor != 0; } public E previous() { return null; } public int nextIndex() { return cursor; } public int previousIndex() { return cursor-1; } public void set(E o) { } public void add(E o) { } } public static void main(String[] args) { JLS_8_1_3_InnerClasses_25 t = new JLS_8_1_3_InnerClasses_25("Hello"); Iterator<String> c = t.new ListItr(1); } }