public function serialize(DomainEvent $event): string {
        $reflect = new ReflectionObject($event);
        $props = $reflect->getProperties(ReflectionProperty::IS_PUBLIC | ReflectionProperty::IS_PRIVATE);

        return json_encode([
            'eventName' => $this->eventNameForClass(get_class($event)),
            'fields'    => $this->serializeFields($props, $event),
        ]);
    }