/**
  * Returns the configured options resolver used for this type.
  *
  * @return OptionsResolver The options resolver
  */
 public function getOptionsResolver() : OptionsResolver
 {
     if (null === $this->optionsResolver) {
         if (null !== $this->parent) {
             $this->optionsResolver = clone $this->parent->getOptionsResolver();
         } else {
             $this->optionsResolver = new OptionsResolver();
         }
         $this->innerType->configureOptions($this->optionsResolver);
         foreach ($this->typeExtensions as $extension) {
             $extension->configureOptions($this->optionsResolver);
         }
     }
     return $this->optionsResolver;
 }
 private function resolveType(ColumnTypeInterface $type) : ResolvedColumnTypeInterface
 {
     $parentType = $type->getParent();
     $fqcn = get_class($type);
     $typeExtensions = [];
     foreach ($this->extensions as $extension) {
         $typeExtensions = array_merge($typeExtensions, $extension->getTypeExtensions($fqcn));
     }
     return $this->resolvedTypeFactory->createResolvedType($type, $typeExtensions, $parentType ? $this->getType($parentType) : null);
 }