Inheritance: ITargetProcessCommand
		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)");
		}
		private static ISagaMessage CreateRevisionCreatedMessage(CreateCommand command)
		{
			var revision = (RevisionDTO) command.Dto;
			revision.ID = EntityId.Next();
			return new RevisionCreatedMessage {Dto = revision};
		}
		private static ISagaMessage CreateRevisionFileCreatedMessage(CreateCommand createCommand)
		{
			var revisionFile = (RevisionFileDTO) createCommand.Dto;
			revisionFile.ID = EntityId.Next();
			return new RevisionFileCreatedMessage { Dto = revisionFile };
		}
		private static ISagaMessage CreateRevisionAssignableCreatedMessage(CreateCommand createCommand)
		{
			return new RevisionAssignableCreatedMessage {Dto = (RevisionAssignableDTO) createCommand.Dto};
		}
		private ISagaMessage GetCommentCreateCommandSuccessfulMessage(CreateCommand x)
		{
			var commandDto = (CommentDTO) x.Dto;
			_createdCommentDto = new CommentDTO
			{
				OwnerID = commandDto.OwnerID,
				GeneralID = commandDto.GeneralID,
				Description = commandDto.Description
			};
			return new CommentCreatedMessage {Dto = _createdCommentDto};
		}
		private static ISagaMessage GetCommentCreateCommandFailedMessage(CreateCommand x)
		{
			return new TargetProcessExceptionThrownMessage();
		}