anchor.diff:          {{ok, UpdModState}, EncodedVal} ->
               update_hashtree(Bucket, Key, EncodedVal, State),
               maybe_cache_object(BKey, Obj, State),
  -            ?INDEX(Obj, put, Idx),
  -            case RB of
  +            ?INDEX({Obj, OldObj}, put, Idx),
  +            Reply = case RB of
                   true ->
  -                    Reply = {dw, Idx, Obj, ReqID};
  +                    {dw, Idx, Obj, ReqID};
                   false ->
  -                    Reply = {dw, Idx, ReqID}
  +                    {dw, Idx, ReqID}
               end;
           {{error, Reason, UpdModState}, _EncodedVal} ->
               Reply = {fail, Idx, Reason}
  
positive.code:     {ActorId, State2} = maybe_new_key_epoch(Coord, State, OldObj, RObj),
      case put_merge(Coord, LWW, OldObj, RObj, ActorId, StartTime) of
          {oldobj, OldObj} ->
              {{false, OldObj}, PutArgs, State2};
          {newobj, NewObj} ->
              AMObj = enforce_allow_mult(NewObj, BProps),
              IndexSpecs = get_index_specs(IndexBackend, CacheData, RequiresGet, AMObj, OldObj),
              ObjToStore0 = maybe_prune_vclock(PruneTime, AMObj, BProps),
              ObjectToStore = maybe_do_crdt_update(Coord, CRDTOp, ActorId, ObjToStore0),
              %% maybe_clean_search_siblings(BProps, OldObj),
              determine_put_result(ObjectToStore, Idx, PutArgs, State2, IndexSpecs, IndexBackend)
      end.
  
  %%maybe_clean_search_siblings(BProps, _OldObj) ->
  %%    case ?IS_SEARCH_ENABLED_FOR_BUCKET(BProps) of
  %%        true -> ok; %% clean_index_siblings(OldObj);
  %%        _ -> ok
  %%    end.
  
  determine_put_result({error, E}, Idx, PutArgs, State, _IndexSpecs, _IndexBackend) ->
      {{fail, Idx, E}, PutArgs, State};
  determine_put_result(ObjToStore, _Idx, PutArgs, State, IndexSpecs, IndexBackend) ->
      {{true, ObjToStore},
       PutArgs#putargs{index_specs = IndexSpecs,
                       is_index    = IndexBackend}, State}.
  
  
negative.code: %% disk are modified.
  -ifdef(TEST).
  %% Use values so that test compile doesn't give 'unused vars' warning.
  -define(INDEX(A,B,C), _=element(1,{{_A1, _A2} = A,B,C}), ok).
  -define(INDEX_BIN(A,B,C,D,E), _=element(1,{A,B,C,D,E}), ok).
  -define(IS_SEARCH_ENABLED_FOR_BUCKET(BProps), _=element(1, {BProps}), false).
  -else.
  -define(INDEX(Objects, Reason, Partition), yz_kv:index(Objects, Reason, Partition)).
  -define(INDEX_BIN(Bucket, Key, Obj, Reason, Partition), yz_kv:index_binary(Bucket, Key, Obj, Reason, Partition)).
  -define(IS_SEARCH_ENABLED_FOR_BUCKET(BProps), yz_kv:is_search_enabled_for_bucket(BProps)).
  -endif.
  