anchor.diff:  
                   req_profiles=#profiling{} :: profiling(),
   
  +                %% whether or not to bypass the cache entirely
  +                use_cache :: boolean(),
                   %% Key to use to check for cached results from key listing
                   cache_key :: term()}).
   
  
positive.code: 
  %% API
  -export([start_link/3,
           get_object_list/1,
           get_internal_state/1]).
  
  
negative.code: 
  %% 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.
  