anchor.diff:  -type fargs() :: {function(), args()}.
   -type extractdef() :: mfargs() | fargs().
   
  --type riak_object() :: tuple(). % no good way to define riak_object
  -
  --type extract_qfun() :: fun((riak_object(),any()) -> search_fields()).
  +-type obj() :: riak_object:riak_object().
  +
  +-type extract_qfun() :: fun((obj(),any()) -> search_fields()).
   -type args() :: any().
   
   -type index() :: binary().
  
positive.code:     end.
  
  %% Make an indexed document under Index/DocId from the RiakObject
  -spec make_indexed_doc(index(), docid(), riak_object(), extractdef()) -> idxdoc().
  make_indexed_doc(Index, DocId, RiakObject, Extractor) ->
      case riak_kv_util:is_x_deleted(RiakObject) of
          true ->
  
negative.code:             IdxDoc
      end.
   
  -spec make_index(obj()) -> binary().
  make_index(RiakObject) ->
      riak_object:bucket(RiakObject).
  
  -spec make_docid(obj()) -> binary().
  make_docid(RiakObject) ->
      riak_object:key(RiakObject).
      
  %% Run the extraction function against the RiakObject to get a list of
  %% search fields and data
  -spec run_extract(obj(), string(), extractdef()) -> search_fields().
  run_extract(RiakObject, DefaultField, {M, F, A}) ->
      M:F(RiakObject, DefaultField, A);
  run_extract(RiakObject, DefaultField, {F, A}) ->
  