validated(key: 'language'), ); } public static function fromString(string $language): self { if (!UserLanguageSource::isValid(value: $language)) { throw new \InvalidArgumentException(message: 'Invalid language'); } return new self( language: $language, ); } public static function fromArray(array $data): self { return new self( language: $data['language'], ); } public function toArray(): array { return [ 'language' => $this->language, ]; } public function toString(): string { return $this->language; } }