private function setTransactionOldValue(PhabricatorProject $project, PhabricatorProjectTransaction $xaction)
 {
     $type = $xaction->getTransactionType();
     switch ($type) {
         case PhabricatorProjectTransactionType::TYPE_NAME:
             $xaction->setOldValue($project->getName());
             break;
         case PhabricatorProjectTransactionType::TYPE_STATUS:
             $xaction->setOldValue($project->getStatus());
             break;
         case PhabricatorProjectTransactionType::TYPE_MEMBERS:
             $affils = $project->loadAffiliations();
             $project->attachAffiliations($affils);
             $old_value = mpull($affils, 'getUserPHID');
             $old_value = array_values($old_value);
             $xaction->setOldValue($old_value);
             $new_value = $xaction->getNewValue();
             $new_value = array_filter($new_value);
             $new_value = array_unique($new_value);
             $new_value = array_values($new_value);
             $xaction->setNewValue($new_value);
             break;
         default:
             throw new Exception("Unknown transaction type '{$type}'!");
     }
     return $this;
 }