anchor.diff:              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()})).
  
positive.code:      {stopped, {call, Backend, stop, [State]}}
      ].
  
  precondition(_From,_To,#qcst{backend=Backend},{call, _M, fold_keys, [_FoldFun, _Acc, [{index, Bucket, _}], BeState]}) ->
      {ok, Capabilities} = Backend:capabilities(Bucket, BeState),
      lists:member(indexes, Capabilities);
  precondition(_From,_To,_S,_C) ->
      true.
  
  
negative.code:       {call, ?MODULE, init_backend, [Backend, Volatile, Config]}}].
  
  running(#qcst{backend=Backend,
                s=State,
                i=Indexes}) ->
      [
       {history, {call, Backend, put, [bucket(), key(), index_specs(), val(), State]}},
       {history, {call, Backend, get, [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]}},
  