Java Generics: Implementing the Iterable Interface