/**
  * @param AggregateRootIdentifier $aggregateRootIdentifier
  * @param int                     $sequenceNumber
  * @param MessageIdentifier       $identifier
  * @param Serializable            $payload
  * @param Metadata                $metadata
  * @param ContractFactory         $contractFactory
  */
 public function __construct(AggregateRootIdentifier $aggregateRootIdentifier, $sequenceNumber, MessageIdentifier $identifier, Serializable $payload, Metadata $metadata = null, ContractFactory $contractFactory = null)
 {
     parent::__construct($identifier, $payload, $metadata, $contractFactory);
     if (!is_int($sequenceNumber)) {
         throw new \InvalidArgumentException('Sequence number should be an integer.');
     }
     $this->sequenceNumber = $sequenceNumber;
     $this->aggregateRootIdentifier = $aggregateRootIdentifier;
 }
 /**
  * @param string            $commandName
  * @param MessageIdentifier $identifier
  * @param Serializable      $payload
  * @param Metadata          $metadata
  * @param ContractFactory   $contractFactory
  */
 public function __construct($commandName, MessageIdentifier $identifier, Serializable $payload, Metadata $metadata = null, ContractFactory $contractFactory = null)
 {
     parent::__construct($identifier, $payload, $metadata, $contractFactory);
     $this->commandName = $commandName;
 }