/**
  * Build a pending version
  *
  * @param Version      $pending
  * @param Version|null $previousVersion
  *
  * @return Version
  */
 public function buildPendingVersion(Version $pending, Version $previousVersion = null)
 {
     $versionNumber = $previousVersion ? $previousVersion->getVersion() + 1 : 1;
     $oldSnapshot = $previousVersion ? $previousVersion->getSnapshot() : [];
     $modification = $pending->getChangeset();
     $snapshot = $modification + $oldSnapshot;
     $changeset = $this->buildChangeset($oldSnapshot, $snapshot);
     $pending->setVersion($versionNumber)->setSnapshot($snapshot)->setChangeset($changeset);
     return $pending;
 }