public CommandEnvelope <TCommand> SetMetadata(Metadata value)
 {
     return(new CommandEnvelope <TCommand>(CommandId, CorrelationId, SourceId, Command, value, Principal));
 }
 private CommandEnvelope(Guid commandId, Guid correlationId, Guid?sourceId, TCommand command, Metadata metadata, ClaimsPrincipal principal)
 {
     CommandId     = commandId;
     CorrelationId = correlationId;
     SourceId      = sourceId;
     Command       = command;
     Metadata      = metadata;
     Principal     = principal;
 }