/**
  * @param Builder $builder
  * @return EventStreamInterface
  */
 protected function getEventStream(Builder $builder)
 {
     $events = [];
     $builder->chunk(1000, function ($dbEvents) use(&$events) {
         array_push($events, ...array_map(function ($dbEvent) {
             $dbEvent = (array) $dbEvent;
             /** @var EventInterface $eventClass */
             $eventClass = $dbEvent['type'];
             $payload = $this->serializer->deserialize($dbEvent['payload']);
             $payload['id'] = $dbEvent['aggregate_root_id'];
             return $eventClass::createFromPayload($payload);
         }, $dbEvents));
     });
     return new EventStream(...$events);
 }