A simple Java question, what this code does ? ArrayList<String> list = new ArrayList<>(); list.add("foo"); list.add("bar"); for(String s: list) { list.remove(s); } :( Rémi tip: the bug lies in ArrayList.Itr.hasNext() (and AbstractList.Itr.hasNext()).