protected function initializeGenerator(IGenerator $innerIterator) { $groupedMap = (new OrderedMap($innerIterator))->groupBy($this->groupKeyFunction); return new ProjectionIterator($groupedMap, null, $this->traversableFactory); }