/**
  * @param \Exception $failureCause
  */
 public function rollback(\Exception $failureCause)
 {
     $this->registeredAggregates->clear();
     $this->stagingEvents->clear();
     try {
         if ($this->isTransactional()) {
             $this->transactionManager->rollbackTransaction();
         }
     } finally {
         $this->listeners->onRollback($this, $failureCause);
     }
 }
 private function startTransaction()
 {
     if ($this->isTransactional()) {
         $this->transactionManager->startTransaction();
     }
 }