$resolvers */ public function __construct( iterable $resolvers, private readonly ReferenceResolver $fallbackResolver, ) { foreach ($resolvers as $resolver) { $this->resolvers[$resolver->referenceClass()->value] = $resolver; } } /** * @var array */ private array $resolvers = []; public function resolverFor(ReferenceClass $referenceClass): ReferenceResolver { return $this->resolvers[$referenceClass->value] ?? $this->fallbackResolver; } public function resolve(ReferenceDescriptor $descriptor): ResolvedReference { return $this->resolverFor($descriptor->referenceClass)->resolve($descriptor); } }