anchor.diff:  %% TODO:
   %% could this func use
   %% use a better name?
  -prepare(timeout, State) ->
  +prepare(timeout, {_ReplyPid, Bucket, Key}=State) ->
       %% start the process that will
       %% fetch the value, be it manifest
       %% or regular object
  +    spawn_link(?MODULE, retriever, [self(), Bucket, Key]),
       {next_state, waiting_value, State}.
   
   waiting_value({object, Value}, State) ->
  
positive.code: 
  -behaviour(gen_fsm).
  
  -export([start_link/3,
           init/1,
           prepare/2,
           waiting_value/2,
           waiting_chunks/2]).
  
  start_link(From, Bucket, Key) ->
      gen_fsm:start_link(?MODULE, [From, Bucket, Key], []).
  
  init([From, Bucket, Key]) ->
      State = From,
      %% purposely have the timeout happen
      %% so that we get called in the prepare
      %% state
  
negative.code: %%      object, return it. If it's a manifest,
  %%      start grabbing the chunks and returning them.
  retriever(ReplyPid, Bucket, Key) ->
      gen_fsm:send_event(ReplyPid,
          riak_moss_riakc:get_object(Bucket, Key)).
  
  %% @doc Returns whether or not
  %%      a value is a normal object,
  %%      or a manifest document
  object_or_manifest(_Value) ->
      ok.
  
  %% @doc Remove a chunk from the
  %%      chunks field of State
  remove_chunk(_State, _Chunk) ->
      ok.
  
  %% @doc Return true or false
  %%      depending on whether
  %%      we're still waiting
  %%      to accumulate more chunks
  still_waiting(_State) ->
      ok.
  
  %% @private
  handle_event(_Event, _StateName, StateData) ->
      {stop,badmsg,StateData}.
  
  %% @private
  handle_sync_event(_Event, _From, _StateName, StateData) ->
      {stop,badmsg,StateData}.
  
  %% @private
  handle_info(request_timeout, StateName, StateData) ->
      ?MODULE:StateName(request_timeout, StateData);
  %% @private
  handle_info(_Info, _StateName, StateData) ->
      {stop,badmsg,StateData}.
  
  %% @private
  terminate(Reason, _StateName, _State) ->
      Reason.
  
  %% @private
  code_change(_OldVsn, StateName, State, _Extra) -> {ok, StateName, State}.
  