anchor.diff:  
   -spec get_failed_keys(tx_state:tx_state(), state()) -> [client_key()].
   get_failed_keys(TxState, State) ->
  +    NumAbort = tx_state:get_numabort(TxState),
       Result =
  -    case tx_state:get_numabort(TxState) of
  +    case NumAbort of
           0 -> [];
           _ ->
               TLogTxItemIds = tx_state:get_tlog_txitemids(TxState),
  
positive.code:               || {TLogEntr, TxItem} <- TLog_TxItems,
                   ?abort =:= tx_item_state:get_decided(TxItem)]
      end,
      case tx_state:get_numabort(TxState) =:= length(Result) of
          true -> ok;
          false ->
              ct:pal("This should not happen: ~p =/= ~p~n",
                     [tx_state:get_numabort(TxState), length(Result)])
      end,
      Result.
  
  
negative.code:     %% inform TPs
      X = [ begin
                {ok, ItemState} = get_item_entry(ItemId, State),
                length(
                  [ msg_tp_do_commit_abort(TP, {PaxId, RTLogEntry,
                                                comm:this(), ItemId},
                                           Result)
                      || {PaxId, RTLogEntry, TP}
                             <- tx_item_state:get_paxosids_rtlogs_tps(ItemState),
                         comm:is_valid(TP) ])
            end || {_TLogEntry, ItemId} <- tx_state:get_tlog_txitemids(TxState) ],
      tx_state:set_numinformed(TxState, lists:sum(X)).
  
  -spec inform_rtms(tx_state:tx_id(), state(), ?commit | ?abort) -> ok.
  inform_rtms(TxId, State, Result) ->
  