anchor.diff:  -include_lib("eunit/include/eunit.hrl").
   -include_lib("riak_kv_vnode.hrl").
   -behaviour(gen_fsm).
  --define(DEFAULT_OPTS, [{returnbody, false}]).
  +-define(DEFAULT_OPTS, [{returnbody, false}, {update_last_modified, true}]).
   -export([start/6,start/7]).
   -export([init/1, handle_event/3, handle_sync_event/4,
            handle_info/3, terminate/3, code_change/4]).
  
positive.code: %% @private
  code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}.
  
  update_metadata(RObj) ->
      MD0 = riak_object:get_update_metadata(RObj),
      NewMD = case dict:is_key("no_update", MD0) of
          true -> dict:erase("no_update", MD0);
          false -> dict:store(<<"X-Riak-VTag">>,
                         make_vtag(RObj),
                         dict:store(<<"X-Riak-Last-Modified">>,
                                    erlang:now(),
                                    MD0))
      end,
      riak_object:apply_updates(riak_object:update_metadata(RObj, NewMD)).
  
  make_vtag(RObj) ->
  
negative.code: 
  %% @private
  initialize(timeout, StateData0=#state{robj=RObj0, req_id=ReqId, client=Client,
                                        update_last_modified=UpdateLastMod,
                                        timeout=Timeout, ring=Ring, bkey={Bucket,Key}=BKey,
                                        rclient=RClient, vnode_options=VnodeOptions}) ->
      case invoke_hook(precommit, RClient, update_last_modified(UpdateLastMod, RObj0)) of
          fail ->
              Client ! {ReqId, {error, precommit_fail}},
              {stop, normal, StateData0};
  