/**
     * {@inheritDoc}
     */
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        /** @var $options \JMSSerializerModule\Options\Handlers */
        $options = $this->getOptions($serviceLocator, 'handlers');
        $handlerRegistry = new HandlerRegistry();
        foreach ($options->getSubscribers() as $subscriberName) {
            $subscriber = $subscriberName;
            if (is_string($subscriber)) {
                if ($serviceLocator->has($subscriber)) {
                    $subscriber = $serviceLocator->get($subscriber);
                } elseif (class_exists($subscriber)) {
                    $subscriber = new $subscriber();
                }
            }
            if ($subscriber instanceof SubscribingHandlerInterface) {
                $handlerRegistry->registerSubscribingHandler($subscriber);
                continue;
            }
            throw new InvalidArgumentException(sprintf('Invalid subscriber "%s" given, must be a service name, ' . 'class name or an instance implementing JMS\\Serializer\\Handler\\SubscribingHandlerInterface;
', is_object($subscriberName) ? get_class($subscriberName) : (is_string($subscriberName) ? $subscriberName : gettype($subscriber))));
        }
        return $handlerRegistry;
    }
 /**
  * @dataProvider getDateTime
  * @group datetime
  */
 public function testDateTimeNoCData($key, $value, $type)
 {
     $handlerRegistry = new HandlerRegistry();
     $handlerRegistry->registerSubscribingHandler(new DateHandler(\DateTime::ISO8601, 'UTC', false));
     $objectConstructor = new UnserializeObjectConstructor();
     $serializer = new Serializer($this->factory, $handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors);
     $this->assertEquals($this->getContent($key . '_no_cdata'), $serializer->serialize($value, $this->getFormat()));
 }