anchor.diff:  
   -include_lib("eunit/include/eunit.hrl").
   
  --define(button(__Button), gui_req(button, __Button, self())).
  +-define(button(__Button), gui_req("button", __Button, self())).
   
   setup() -> 
       ?imem_test_setup().
  
positive.code:     Gres1 = Gres0#gres{cnt=RawCnt,toolTip=integer_to_list(RawCnt)},
      ReplyTo ! Gres1,
      % ?Log("ReplyTo  ~p~n", [ReplyTo]),
      ?Log("Gres  ~p~n", [Gres1]),
      State;
  gui_response(Gres0, #state{nav=ind,rawCnt=RawCnt,indCnt=IndCnt,guiCol=true,replyTo=ReplyTo}=State) ->
      ToolTip = integer_to_list(RawCnt) ++ [$/] ++ integer_to_list(IndCnt) ++ " page needs refresh",
      Gres1 = Gres0#gres{cnt=IndCnt,toolTip=ToolTip},
      ReplyTo ! Gres1,
      % ?Log("ReplyTo  ~p~n", [ReplyTo]),
      ?Log("Gres  ~p~n", [Gres1]),
      State;
  gui_response(Gres, #state{nav=ind,rawCnt=RawCnt,indCnt=IndCnt,replyTo=ReplyTo}=State) ->
      ToolTip = integer_to_list(RawCnt) ++ [$/] ++ integer_to_list(IndCnt),
      Gres1 = Gres#gres{cnt=IndCnt,toolTip=ToolTip},
      ReplyTo ! Gres1,
      % ?Log("ReplyTo  ~p~n", [ReplyTo]),
      ?Log("Gres  ~p~n", [Gres1]),
      State.
  
  gui_close(GuiResult,State) -> 
  
negative.code:     ?Log("tailing -- unexpected event ~p in state~n~p~n", [Other,State]),
      {next_state, tailing, State}.
  
  completed({"button", "...", ReplyTo}, #state{dirtyCnt=DC}=State0) when DC==0 ->
      % clear buffers, close and reopen fetch with skip and tail options
      State1 = reply_stack(completed, ReplyTo, State0),
      State2 = fetch_close(State1),
      State3 = fetch(skip,true,State2),
      State4 = data_clear(State3),
      State5 = gui_clear(#gres{state=tailing,loop=">|..."},State4#state{tailMode=true}),
      {next_state, tailing, State5};
  completed({"button", "...", ReplyTo}, State0) ->
      % reject because of uncommitted changes
      State1 = gui_nop(#gres{state=completed,beep=true,message=?MustCommit},State0#state{replyTo=ReplyTo}),
      {next_state, completed, State1};
  completed({"button", ">|...", ReplyTo}, State0) ->
      % keep data (if any) and switch .. tail mode
      State1 = reply_stack(completed, ReplyTo, State0),
      State2 = fetch(skip,true,State1),
      State3 = gui_clear(State2),
      State4 = gui_nop(#gres{state=tailing,loop=">|..."},State3#state{tailMode=true}),
      {next_state, tailing, State4};
  completed({"button", ">|", ReplyTo}, #state{bufCnt=0}=State0) ->
      % reject command because we have no data
      State1 = reply_stack(completed, ReplyTo, State0),
      State1 = gui_nop(#gres{state=completed,beep=true},State1),
      {next_state, completed, State1};
  completed({"button", ">|", ReplyTo}, #state{bl=BL,bufBot=BufBot}=State0) ->
      % jump .. buffer bottom
      State1 = reply_stack(completed, ReplyTo, State0),
      State2 = gui_replace_until(BufBot,BL,#gres{state=completed},State1),
      {next_state, completed, State2};
  