Iterable<Grouping<TKey, TValue>> iterate() sync* { var g = lastGrouping; if (g != null) { do { g = g.next; yield g; } while (g != lastGrouping); } }