anchor.diff:      end.
   
   
  -%% ev_continue(Pid, Slogan) ->
  -%%     ev_announce(Pid, continue, Slogan).
  -
  -%% ev_continue(Pid, Slogan, Extra) ->
  -%%     ev_announce(Pid, continue, Slogan, Extra).
  -
  -%% ev_ready(Pid, Slogan) ->
  -%%     ev_announce(Pid, ready, Slogan).
  -
  -%% ev_ready(Pid, Slogan, Extra) ->
  -%%     ev_announce(Pid, ready, Slogan, Extra).
  -
  -%% ev_terminate(Pid) ->
  -%%     Pid ! {terminate, self()}.
  -
  -%% ev_announce(To, Tag, Slogan) ->
  -%%     ev_announce(To, Tag, Slogan, undefined)
  -
  -%% ev_announce(To, Tag, Slogan, Extra) ->
  -%%     To ! {Tag, self(), Slogan, Extra}.
  -
  -%% ev_await_continue(Pid, Slogan, Pids) when is_pid(Pid) andalso is_list(Pids) ->
  -%%     ev_await(Pid, continue, Slogan, Pids).
  -
  -%% ev_await_ready(Pid, Slogan, Pids) when is_pid(Pid) andalso is_list(Pids) ->
  -%%     ev_await(Pid, ready, Slogan, Pids).
  -
  -%% ev_await_termination(Pid) ->
  -%%     receive
  -%%         {'DOWN', _, process, Pid, _} ->
  -%%             ok
  -%%     end.
  -
  -%% %% We expect a message from Pid, but we also watch for DOWN from 
  -%% %% both Pid and Pids, in which case the test has failed!
  -%% ev_await(Pid, Tag, Slogan, Pids) ->
  -%%     receive
  -%%         {Tag, Pid, Slogan, undefined} ->
  -%%             ok;
  -%%         {Tag, Pid, Slogan, Extra} ->
  -%%             {ok, Extra};
  -%%         {'DOWN', _, process, Pid, Reason} ->
  -%%             ee("Unexpected DOWN regarding tester ~p: "
  -%%                "~n   ~p", [Tester, Reason]),
  -%%             {error, {unexpected_exit, tester}};
  -            
  -%% ev_await_check_down(DownPid, DownReason, Pids) ->
  -%%     case lists:keymember(DownPid, 1, Pids) of
  -%%         {value, {_, Name}} ->
  -%%             ee("Unexpected DOWN regarding ~w ~p: "
  -%%                "~n   ~p", [Name, DownPid, Reason]),
  -%%             throw({error, {unexpected_exit, Name}});
  -%%         false ->
  -%%             ok
  -%%     end.
  -
  -    
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %% This test case is intended to test what happens when a socket is 
   %% remotely closed while the process is calling the recvmsg function.
  
positive.code: 
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  sock_open(Domain, Type, Proto) ->
      try socket:open(Domain, Type, Proto) of
          {ok, Socket} ->
  
negative.code:                    end},
           #{desc => "announce ready",
             cmd  => fun(#{tester := Tester, lport := Port}) ->
                             %% Tester ! {ready, self(), Port},
                             ev_ready(Tester, init, Port),
                             ok
                     end},
           #{desc => "await continue (accept and recv)",
             cmd  => fun(#{tester := Tester}) ->
                             ok = ev_await_continue(Tester, tester, accept_recv)
                     end},
  
           %% *** The actual test ***
           #{desc => "attempt accept",
             cmd  => fun(#{lsock := LSock} = State) ->
                             case socket:accept(LSock) of
                                 {ok, Sock} ->
                                     {ok, State#{sock => Sock}};
                                 {error, _} = ERROR ->
                                     ERROR
  