/**
  * Unserializes a serialized Reference object (if not unserialized already).
  *
  * @param array|Reference $reference
  * @return Reference Reference
  */
 protected function unserializeReference($reference)
 {
     if (is_array($reference)) {
         $reference = $this->deserializerFactory->newReferenceDeserializer()->deserialize($reference);
     }
     return $reference;
 }
 /**
  * @dataProvider referenceProvider
  */
 public function testSnakSerializationRoundtrips(Reference $reference)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newReferenceSerializer()->serialize($reference);
     $newReference = $deserializerFactory->newReferenceDeserializer()->deserialize($serialization);
     $this->assertTrue($reference->equals($newReference));
 }