Motivation -- Approach 3: Separate Iterator
Iterator i(pList);
i->First();
while (!i->IsDone()) {
ProcessItem (i->CurrentItem());
i->Next();
}