Iterator example (2)
class FilteredListIterator implements ListIterator {
   List.Node curr;
   FilteredListIterator(List list, Filter f) {}
   getFirst() {
     curr = list.head;
     while (curr != null) {
       if (f.accepts(curr.data))
         break;
       curr = curr.next;
     }
     return curr;
   }
   getNext() {}
}