<?php  namespace Symfony\Component\Serializer\Context\Normalizer; use Symfony\Component\Serializer\Exception\InvalidArgumentException; use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer;  abstract class AbstractObjectNormalizerContextBuilder extends AbstractNormalizerContextBuilder {  public function withEnableMaxDepth(?bool $enableMaxDepth): static { return $this->with(AbstractObjectNormalizer::ENABLE_MAX_DEPTH, $enableMaxDepth); }  public function withDepthKeyPattern(?string $depthKeyPattern): static { if (null === $depthKeyPattern) { return $this->with(AbstractObjectNormalizer::DEPTH_KEY_PATTERN, null); }  $matches = []; preg_match_all('/(?<!%)(?:%{2})*%(?<specifier>[a-z])/', $depthKeyPattern, $matches); if (2 !== \count($matches['specifier']) || 's' !== $matches['specifier'][0] || 's' !== $matches['specifier'][1]) { throw new InvalidArgumentException(\sprintf('The depth key pattern "%s" is not valid. You must set exactly two string placeholders.', $depthKeyPattern)); } return $this->with(AbstractObjectNormalizer::DEPTH_KEY_PATTERN, $depthKeyPattern); }  public function withDisableTypeEnforcement(?bool $disableTypeEnforcement): static { return $this->with(AbstractObjectNormalizer::DISABLE_TYPE_ENFORCEMENT, $disableTypeEnforcement); }  public function withSkipNullValues(?bool $skipNullValues): static { return $this->with(AbstractObjectNormalizer::SKIP_NULL_VALUES, $skipNullValues); }  public function withSkipUninitializedValues(?bool $skipUninitializedValues): static { return $this->with(AbstractObjectNormalizer::SKIP_UNINITIALIZED_VALUES, $skipUninitializedValues); }  public function withMaxDepthHandler(?callable $maxDepthHandler): static { return $this->with(AbstractObjectNormalizer::MAX_DEPTH_HANDLER, $maxDepthHandler); }  public function withExcludeFromCacheKeys(?array $excludeFromCacheKeys): static { return $this->with(AbstractObjectNormalizer::EXCLUDE_FROM_CACHE_KEY, $excludeFromCacheKeys); }  public function withDeepObjectToPopulate(?bool $deepObjectToPopulate): static { return $this->with(AbstractObjectNormalizer::DEEP_OBJECT_TO_POPULATE, $deepObjectToPopulate); }  public function withPreserveEmptyObjects(?bool $preserveEmptyObjects): static { return $this->with(AbstractObjectNormalizer::PRESERVE_EMPTY_OBJECTS, $preserveEmptyObjects); } }