anchor.diff:      %%    terminations, so this process would still
       %%    live.
       CallerRef = erlang:monitor(process, Caller),
  -
       %% we want to trap exits because
       %% `erlang:link` isn't atomic, and
       %% since we're starting the reader
  
positive.code:     State = #state{bucket=Bucket,
                     caller=CallerRef,
                     key=Key},
      %% purposely have the timeout happen
      %% so that we get called in the prepare
      %% state
      {ok, prepare, State, 0};
  init([test, Bucket, Key, ContentLength, BlockSize]) ->
      {ok, prepare, State1, 0} = init([Bucket, Key, self()]),
      %% purposely have the timeout happen
      %% so that we get called in the prepare
      %% state
  
negative.code: %% gen_fsm callbacks
  -export([init/1,
           prepare/2,
           prepare/3,
           waiting_value/3,
           waiting_continue_or_stop/2,
           waiting_chunks/2,
           waiting_chunks/3,
  