Deserializes complex objects serialized with the XmlSerializer.
Inheritance: IDisposable
		private Tuple<IMessage[], int> Deserialize(XmlDocument xmlDocument)
		{
			var notFoundTypesCount = 0;

			var deserializer = new XmlDeserializer(e =>
			{
				notFoundTypesCount++;
				_logger.Warn(e);
			});
			
			var messages = (IMessage[]) deserializer.Deserialize(xmlDocument);
			return Tuple.Create(messages.Where(x => x != null).ToArray(), notFoundTypesCount);
		}
		public void Init()
		{
			_serializer = new XmlSerializer();
			_deserializer = new XmlDeserializer();
		}
		public void DeserializedSampleMessageSagaIdIsEqualToSampleMessageSagaId()
		{
			var deserializer = new XmlDeserializer();

			var deserialized = (SampleMessage) deserializer.Deserialize(_serialized);
			deserialized.SagaId.Should(Is.EqualTo(_message.SagaId), "deserialized.SagaId.Should(Is.EqualTo(_message.SagaId))");
		}
		public void DeserializeSampleMessageFromXmlAndAssertThatNameIs(string sampleMessageName)
		{
			var deserializer = new XmlDeserializer();

			var deserialized = (SampleMessage) deserializer.Deserialize(_serialized);
			deserialized.Name.Should(Is.EqualTo(sampleMessageName), "deserialized.Name.Should(Is.EqualTo(sampleMessageName))");
		}
		private static IMessage[] Deserialize(XmlDocument xmlDocument)
		{
			var deserializer = new XmlDeserializer();
			return (IMessage[]) deserializer.Deserialize(xmlDocument);
		}