/**
  * Set the specified file as the next version for the fragment.
  */
 public function updateFromFile(PhabricatorUser $viewer, PhabricatorFile $file)
 {
     $existing = id(new PhragmentFragmentVersionQuery())->setViewer($viewer)->withFragmentPHIDs(array($this->getPHID()))->execute();
     $sequence = count($existing);
     $this->openTransaction();
     $version = id(new PhragmentFragmentVersion());
     $version->setSequence($sequence);
     $version->setFragmentPHID($this->getPHID());
     $version->setFilePHID($file->getPHID());
     $version->save();
     $this->setLatestVersionPHID($version->getPHID());
     $this->save();
     $this->saveTransaction();
     $file->attachToObject($version->getPHID());
 }