internal WorkflowSucceededMessage(WorkflowMessage workflowMessage, ActorPath replyingReceiver)
 {
     if (workflowMessage.ReplyTo == null)
     {
         throw new WorkflowRuntimeException($"Trying to reply to workflowMessage {workflowMessage.MessageTypeName} Id {workflowMessage.TransactionId} without replyTo is set");
     }
     TransactionId               = workflowMessage.TransactionId;
     TransactionGroupId          = workflowMessage.TransactionGroupId;
     MessageTypeName             = workflowMessage.MessageTypeName + WorkflowMessage.REPLY;
     OriginalMessageCreationTime = workflowMessage.MessageCreationTime;
     MessageCreationTime         = DateTime.UtcNow;
     ReplyingReceiver            = replyingReceiver;
 }
 internal WorkflowUnhandledMessage(WorkflowMessage workflowMessage, string unhandledExplanation, ActorPath replyingReceiver)
 {
     if (workflowMessage.ReplyTo == null)
     {
         throw new WorkflowRuntimeException($"Trying to reply to workflowMessage {workflowMessage.MessageTypeName} Id {workflowMessage.TransactionId} without replyTo is set");
     }
     TransactionId        = workflowMessage.TransactionId;
     TransactionGroupId   = workflowMessage.TransactionGroupId;
     UnhandledExplanation = unhandledExplanation;
     MessageTypeName      = workflowMessage.MessageTypeName + WorkflowMessage.REPLY;
     Data                        = workflowMessage.Data;
     ReplyingReceiver            = replyingReceiver;
     OriginalMessageCreationTime = workflowMessage.MessageCreationTime;
     MessageCreationTime         = DateTime.UtcNow;
 }
 internal WorkflowFailedMessage(WorkflowMessage workflowMessage, ActorPath reportingActor, Exception ex, string errorMessage)
 {
     if (workflowMessage.ReplyTo == null)
     {
         throw new WorkflowRuntimeException($"Trying to reply to workflowMessage {workflowMessage.MessageTypeName} Id {workflowMessage.TransactionId} without replyTo is set");
     }
     TransactionId      = workflowMessage.TransactionId;
     TransactionGroupId = workflowMessage.TransactionGroupId;
     MessageTypeName    = workflowMessage.MessageTypeName + WorkflowMessage.REPLY;
     Data = workflowMessage.Data;
     OriginalMessageCreationTime = workflowMessage.MessageCreationTime;
     MessageCreationTime         = DateTime.UtcNow;
     ReportingActor = reportingActor;
     ErrorMessage   = errorMessage;
     Exception      = ex;
 }