anchor.diff:  
   %% List Keys stuff
   %%--------------------------------------------------------------------
  +
  +-spec maybe_fetch_key_list(pid(), list_object_request(), state()) ->
  +    fsm_state_return().
  +maybe_fetch_key_list(RiakcPid, Request, State=#state{use_cache=true,
  +                                                     cache_key=CacheKey}) ->
  +    CacheResult = riak_cs_list_objects_ets_cache:lookup(CacheKey),
  +    fetch_key_list(RiakcPid, Request, State, CacheResult);
  +maybe_fetch_key_list(RiakcPid, Request, State=#state{use_cache=false}) ->
  +    fetch_key_list(RiakcPid, Request, State, false).
  +
  +-spec maybe_write_to_cache(state(), list()) -> ok.
  +maybe_write_to_cache(#state{use_cache=false}, _ListofListofKeys) ->
  +    ok;
  +maybe_write_to_cache(#state{cache_key=CacheKey}, ListofListofKeys) ->
  +    riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys).
   
   %% @doc Either proceed using the cached key list or make the request
   %% to start a key listing.
  
positive.code:     {stop, Reason, State}.
  
  -spec handle_keys_done(state()) -> fsm_state_return().
  handle_keys_done(State=#state{cache_key=CacheKey,
                                key_buffer=ListofListofKeys}) ->
      riak_cs_list_objects_ets_cache:write(CacheKey, ListofListofKeys),
      NewState = prepare_state_for_first_mapred(ListofListofKeys, State),
      maybe_map_reduce(NewState).
  
  
negative.code: -spec start_link(pid(), list_object_request(), term()) ->
      {ok, pid()} | {error, term()}.
  start_link(RiakcPid, ListKeysRequest, CacheKey) ->
      start_link(RiakcPid, ListKeysRequest, CacheKey, true).
  
  -spec start_link(pid(), list_object_request(), term(), UseCache :: boolean()) ->
      {ok, pid()} | {error, term()}.
  start_link(RiakcPid, ListKeysRequest, CacheKey, UseCache) ->
      gen_fsm:start_link(?MODULE, [RiakcPid, ListKeysRequest, CacheKey, UseCache], []).
  
  -spec get_object_list(pid()) ->
      {ok, list_object_response()} |
  