*/ public readonly array $sources; public function __construct( public readonly MutationMode $mode, public readonly Directive $directive, SourceInterface ...$sources, ) { // @todo continue with source collecting internally? if ($sources !== [] && $this->mode === MutationMode::Remove) { throw new \LogicException( 'Cannot remove and declare sources at the same time', 1677244893 ); } $this->sources = $sources; } public function jsonSerialize(): array { $service = GeneralUtility::makeInstance(ModelService::class); return [ 'mode' => $this->mode, 'directive' => $this->directive, 'sources' => $service->serializeSources(...$this->sources), ]; } }