Iterator<T> () { if (currentGroup == null || !currentGroup.hasNext()) { do { currentGroup = groupsIterator.hasNext() ? groupsIterator.next() : null; } while (currentGroup != null && !currentGroup.hasNext()); } return currentGroup; }