/**
  * Create wrapper from decoded xml
  *
  * @param XmlDeserializationVisitor $visitor
  * @param mixed                     $data
  * @param array                     $type
  * @param Context                   $context
  *
  * @return EventContainer
  * @throws RuntimeException
  */
 public function deserializeContainerXml(XmlDeserializationVisitor $visitor, $data, array $type, Context $context)
 {
     if (!is_object($data)) {
         throw new RuntimeException(sprintf('Deserialized SimpleXMLElement data expected, got "%s"', gettype($data)));
     }
     if (!$data instanceof \SimpleXMLElement) {
         throw new RuntimeException(sprintf('Deserialized SimpleXMLElement data expected, got "%s"', get_class($data)));
     }
     if (!isset($data->data) || !$data->data instanceof \SimpleXMLElement) {
         throw new RuntimeException(sprintf('Deserialized data child node "event" missed'));
     }
     if (!isset($data['type'])) {
         throw new RuntimeException(sprintf('Deserialized "type" attribute for d"event" node missed'));
     }
     $container = $this->createEventContainer();
     $visitor->startVisitingObject($context->getMetadataFactory()->getMetadataForClass(get_class($container)), $container, [], $context);
     $event = $visitor->getNavigator()->accept($data->data, array('name' => $this->namingStrategy->typeToClass((string) $data['type'])), $context);
     $this->setContainerEvent($container, $event);
     return $container;
 }