import java.util.*;

public class SomeClass {

    static List foo(){return null;}

    public static void main(String[] args) {
        for (Iterator it = <selection>foo()</selection>.listIterator(foo().size()); it.hasNext(); ) {

        }
    }
}