public void CorrectReferenceSerialization()
		{
			var dto = new DataTransferObject();
			var message1 = new CreateCommand {Dto = dto};
			var message2 = new CreateCommand {Dto = dto};

			var serialized = _serializer.Serialize(new[] {message1, message2});

			var deserialized = (CreateCommand[]) _deserializer.Deserialize(serialized);
			deserialized[0].Dto.Should(Is.Not.Null, "deserialized[0].Dto.Should(Is.Not.Null)");
			deserialized[1].Dto.Should(Is.Not.Null, "deserialized[1].Dto.Should(Is.Not.Null)");
		}
		public static IChangedFieldsMappingPolicy CreatePolicy(DataTransferObject objectDTO)
		{
			lock (LockObject)
			{
				if (_factory == null)
					_factory = new ChangedFieldsPolicyFactory();
			}

			if (objectDTO is UserStoryDTO)
				return new UserStoryChangedFieldsPolicy();

			if (objectDTO is BugDTO)
				return new UserStoryChangedFieldsPolicy();

			if (objectDTO is FeatureDTO)
				return new UserStoryChangedFieldsPolicy();

			if (objectDTO is RequestDTO)
				return new UserStoryChangedFieldsPolicy();

			throw new ArgumentException("Wrong DTO type", objectDTO.GetType().FullName);
		}