anchor.diff:        {call, ?MODULE, init_backend, [Backend, Volatile, Config]}}].
   
   running(#qcst{backend=Backend,
  -              s=State}) ->
  +              s=State,
  +              i=Indexes}) ->
       [
        {history, {call, Backend, put, [bucket(), key(), index_specs(), val(), State]}},
        {history, {call, Backend, get, [bucket(), key(), State]}},
  -     {history, {call, Backend, delete, [bucket(), key(), [], State]}},
  +     {history, {call, ?MODULE, delete, [bucket(), key(), Backend, State, Indexes]}},
        {history, {call, Backend, fold_buckets, [fold_buckets_fun(), get_fold_buffer(), g_opts(), State]}},
        {history, {call, Backend, fold_keys, [fold_keys_fun(), get_fold_buffer(), fold_keys_opts(), State]}},
        {history, {call, Backend, fold_objects, [fold_objects_fun(), get_fold_buffer(), g_opts(), State]}},
  
positive.code:               {call, _M, put, [_Bucket, _Key, _IndexEntries, _Val, _BeState]}, {R, _RState}) ->
      R =:= ok orelse R =:= already_exists;
  postcondition(_From, _To, _S,
                {call, _M, delete,[_Bucket, _Key, _IndexEntries, _BeState]}, {R, _RState}) ->
      R =:= ok;
  postcondition(_From, _To, S,
                {call, _M, fold_buckets, [_FoldFun, _Acc, _Opts, _BeState]}, FoldRes) ->
  
negative.code:             NewState
      end.
  
  delete(Bucket, Key, Backend, BackendState, Indexes) ->
      IndexSpecs = [{remove, Idx, SKey} || {B,Idx,SKey,K} <- Indexes,
                                           B == Bucket,
                                           K == Key],
      case Backend:delete(Bucket, Key, IndexSpecs, BackendState) of
          {ok, NewState} ->
              {ok, NewState};
          {error, Reason, _NewState} ->
              {error, Reason}
      end.
  
  get_fold_buffer() ->
      riak_kv_fold_buffer:new(100,
                              get_fold_buffer_fun({raw, foldid, self()})).
  