/// <summary>
 /// Validates this instance.
 /// </summary>
 /// <exception cref="InvalidMessageBody"></exception>
 /// <exception cref="InvalidMessageHeader"></exception>
 /// <exception cref="InvalidMainActivityId"></exception>
 /// <exception cref="InvalidStageActivityId"></exception>
 /// <exception cref="InvalidBusinessTransactionException">
 /// </exception>
 /// <exception cref="InvalidStageNameException"></exception>
 public void Validate()
 {
     if (MessageBody.IsNullOrEmpty())
     {
         throw new InvalidMessageBody();
     }
     if (MessageHeader.IsNullOrEmpty())
     {
         throw new InvalidMessageHeader();
     }
     if (MainActivityId == default)
     {
         throw new InvalidMainActivityId();
     }
     if (StageActivityId == default)
     {
         throw new InvalidStageActivityId();
     }
     if (BusinessTransaction.IsNullOrEmpty())
     {
         throw new InvalidBusinessTransactionException();
     }
     if (BusinessProcess.IsNullOrEmpty())
     {
         throw new InvalidBusinessTransactionException();
     }
     if (CurrentStage.IsNullOrEmpty())
     {
         throw new InvalidStageNameException();
     }
 }