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