So this is not used down in the kernel, only to support the Core API returning iterables from its various methods. I could mount a defense for it conceptually though, which is that the Iterable API does not specify that it can be iterated several times. It specifically states that is a marker interface to allow the use of for( Blah a : as ); syntax, which is what we are using it for :)