> */ public array $events = []; public function handle(array $event): void { $this->events[] = $event; } /** @return array */ public function types(): array { return array_map(fn ($e) => (string) $e['type'], $this->events); } /** @return array> */ public function ofType(string $type): array { return array_values(array_filter($this->events, fn ($e) => ($e['type'] ?? null) === $type)); } }