anchor.diff:  handle_info(die_for_testing_purposes_only, _State) ->
       %% exit({told_to_die, lists:duplicate(500000, $x)});
       exit({told_to_die, lists:duplicate(50, $x)});
  -handle_info(inactivity_timeout, _State) ->
  +handle_info(inactivity_timeout, State) ->
       %% No events have arrived for the timeout period
       %% so hibernate to free up resources.
  -    {ok, _State, hibernate};
  +    {ok, State, hibernate};
   handle_info(Info, State) ->
       lager:info("handle_info got ~p", [Info]),
       {ok, State}.
  
positive.code: %%                          remove_handler
  %% @end
  %%--------------------------------------------------------------------
  handle_event({monitor, Pid, Type, Info}, State=#state{timer_ref=TimerRef}) ->
      %% Reset the inactivity timeout
      NewTimerRef = reset_timer(TimerRef),
      maybe_collect_garbage(Pid, Type),
      Pretty = format_pretty_proc_info(Pid, almost_current_function),
      lager:info("monitor ~w ~w ~s ~w", [Type, Pid, Pretty, Info]),
      {ok, State#state{timer_ref=NewTimerRef}};
  
negative.code: %% @doc If the message type is due to a large heap warning
  %% and the source is ourself, go ahead and collect garbage
  %% to avoid the death spiral.
  -spec maybe_collect_garbage(atom()) -> ok.
  maybe_collect_garbage(large_heap) ->
      erlang:garbage_collect(),
      ok;
  maybe_collect_garbage(_) ->
      ok.
  
  -spec reset_timer(undefined | reference()) -> reference().
  