public function getApplicationTransactionTitle(PhabricatorApplicationTransaction $xaction)
 {
     $author_phid = $xaction->getAuthorPHID();
     $old = $this->decodeValue($xaction->getOldValue());
     $new = $this->decodeValue($xaction->getNewValue());
     $add = array_diff($new, $old);
     $rem = array_diff($old, $new);
     if ($add && !$rem) {
         return pht('%s updated %s, added %d: %s.', $xaction->renderHandleLink($author_phid), $this->getFieldName(), new PhutilNumber(count($add)), $xaction->renderHandleList($add));
     } else {
         if ($rem && !$add) {
             return pht('%s updated %s, removed %d: %s.', $xaction->renderHandleLink($author_phid), $this->getFieldName(), new PhutilNumber(count($rem)), $xaction->renderHandleList($rem));
         } else {
             return pht('%s updated %s, added %d: %s; removed %d: %s.', $xaction->renderHandleLink($author_phid), $this->getFieldName(), new PhutilNumber(count($add)), $xaction->renderHandleList($add), new PhutilNumber(count($rem)), $xaction->renderHandleList($rem));
         }
     }
 }