@Override
 public void onSuccess(UpdateTransUnitResult result) {
   TransUnit updatedTU = result.getUpdateInfoList().get(0).getTransUnit();
   Log.debug("save resulted TU: " + updatedTU.debugString());
   if (result.isSingleSuccess()) {
     eventBus.fireEvent(
         new NotificationEvent(
             NotificationEvent.Severity.Info,
             messages.notifyUpdateSaved(updatedTU.getRowIndex(), updatedTU.getId().toString()),
             goToRowLink));
     int rowIndexOnPage = navigationService.findRowIndexById(updatedTU.getId());
     if (rowIndexOnPage != NavigationService.UNDEFINED) {
       UndoLink undoLink = undoLinkProvider.get();
       undoLink.prepareUndoFor(result);
       targetContentsPresenter.addUndoLink(rowIndexOnPage, undoLink);
       navigationService.updateDataModel(updatedTU);
       targetContentsPresenter.confirmSaved(updatedTU);
       targetContentsPresenter.setFocus();
     }
     queue.removeSaved(event, updatedTU.getVerNum());
   } else {
     saveFailure(result.getUpdateInfoList().get(0).getErrorMessage());
   }
   if (queue.hasPending()) {
     performSave(id);
   }
 }
 @Override
 public void prepareUndoFor(UpdateTransUnitResult updateTransUnitResult) {
   ClickHandler clickHandler =
       new RevertTransUnitUpdateClickHandler(updateTransUnitResult.getUpdateInfoList());
   handlerRegistration = addClickHandler(clickHandler);
   canUndo = true;
 }