anchor.diff:                   end
       end.
   
  --spec update_objects([{bound_object(), op_name(), op_param()}], txid())
  +-spec update_objects([{bound_object(), op_name(), op_param()} | {bound_object(), {op_name(), op_param()}}], txid())
                       -> ok | {error, reason()}.
   update_objects(Updates, TxId) ->
       {_, _, CoordFsmPid} = TxId,
  
positive.code: %% some systests that call updates with
  %% {Operation, Params} (as a single parameter),
  %% and Operation, Params (two separate parameters).
  -spec check_and_format_ops([{key(), type(), bucket(), op(), op_param()} | {key(), type(), bucket(), {op(), op_param()}}]) ->
                                  [{{key(), bucket()}, type(), {op(), op_param()}}] | {error, reason()}.
  check_and_format_ops(Updates) ->
      try
          lists:map(fun(Update) ->
              {Key, Type, Bucket, Op} = case Update of
                  {{K, T, B}, O} ->
                      {K, T, B, O};
                  {{K, T, B}, O, P} ->
                      {K, T, B, {O, P}}
              end,
  
negative.code: 
  %% @doc The following function is called by the static versions of read and update_objects
  %%      to execute a static transaction.
  -spec start_static_transaction(update_objects | read_objects, list(), boolean(), vectorclock()) -> {ok, snapshot_time()} | {error, reason()}.
  start_static_transaction(TransactionKind, ListOfOperations, StayAlive, ClientCausalVC) ->
              TxPid = case StayAlive of
                  true ->
  