anchor.diff:  	spawn_link(
   	  fun () ->
   		  try proxy_start(TC, NS, P, Parent, Tag)
  -		  catch C:X:Stacktrace ->
  -			  io:format(
  -			    "~w: ~w:~p ~p~n",
  -			    [self(),C,X,Stacktrace])
  +		  catch
  +                      C:X:Stacktrace ->
  +			  ?P("~p Failed starting proxy: "
  +                             "~n      Class:      ~w"
  +                             "~n      Error:      ~p"
  +                             "~n      Stacktrace: ~p",
  +                             [self(), C, X, Stacktrace])
   		  end
   	  end),
       receive {started,Tag,Port} ->
  
positive.code: 
  -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 
  	 init_per_group/2,end_per_group/2,
  	 init_per_testcase/2, end_per_testcase/2]).
  -export([basic/1, resolve/1, edns0/1, txt_record/1, files_monitor/1,
  	 last_ms_answer/1, intermediate_error/1]).
  -export([
  	 gethostbyaddr/0, gethostbyaddr/1,
  	 gethostbyaddr_v6/0, gethostbyaddr_v6/1,
  
negative.code: %% Internal name server
  
  ns_internal(ServerSpec, Mref, Tag, S) ->
      ?P("ns-internal -> await message"),
      receive
          {'DOWN',Mref,_,_,Reason} ->
              ?P("ns-internal -> received DOWN: "
                 "~n      ~p", [Reason]),
              exit(Reason);
          Tag ->
              ?P("ns-internal -> received tag: done"),
              ok;
          {udp,S,IP,Port,Data} ->
              ?P("ns-internal -> received UDP message"),
              Req = ok(inet_dns:decode(Data)),
              {Resp, ServerSpec2} = ns_internal(ServerSpec, Req),
              RespData = inet_dns:encode(Resp),
              _ = ok(gen_udp:send(S, IP, Port, RespData)),
              _ = ok(inet:setopts(S, [{active,once}])),
              ns_internal(ServerSpec2, Mref, Tag, S)
      end.
  
  ns_internal(#{rcode := Rcode,
                ts    := TS0,
                etd   := ETD} = ServerSpec, Req) ->
      ?P("ns-internal -> request received (time validation)"),
      TS1    = timestamp(),
      Hdr    = inet_dns:msg(Req, header),
      Opcode = inet_dns:header(Hdr, opcode),
      Id     = inet_dns:header(Hdr, id),
      Rd     = inet_dns:header(Hdr, rd),
      %%
      Qdlist = inet_dns:msg(Req, qdlist),
      ?P("ns-internal -> time validation: "
         "~n      ETD:       ~w"
         "~n      TS1 - TS0: ~w", [ETD, TS1 - TS0]),
      RC = if ((TS1 - TS0) >= ETD) ->
                   ?P("ns-internal -> time validated"),
                   ?NOERROR;
              true ->
                   ?P("ns-internal -> time validation failed"),
                   Rcode
           end,
      Resp   = inet_dns:make_msg(
                 [{header,
                   inet_dns:make_header(
                     [{id,     Id},
                      {qr,     true},
                      {opcode, Opcode},
                      {aa,     true},
                      {tc,     false},
                      {rd,     Rd},
                      {ra,     false},
                      {rcode,  RC}])},
                  {qdlist, Qdlist}]),
      {Resp, ServerSpec#{ts => timestamp()}};
  ns_internal(#{rcode := Rcode} = ServerSpec, Req) ->
      ?P("ns-internal -> request received"),
      Hdr    = inet_dns:msg(Req, header),
      Opcode = inet_dns:header(Hdr, opcode),
      Id     = inet_dns:header(Hdr, id),
      Rd     = inet_dns:header(Hdr, rd),
      %%
      Qdlist = inet_dns:msg(Req, qdlist),
      Resp   = inet_dns:make_msg(
                 [{header,
                   inet_dns:make_header(
                     [{id,Id},
                      {qr,true},
                      {opcode,Opcode},
                      {aa,true},
                      {tc,false},
                      {rd,Rd},
                      {ra,false},
                      {rcode,Rcode}])},
                  {qdlist,Qdlist}]),
      {Resp, ServerSpec#{ts => timestamp()}}.
  
  
  %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  %% Behaviour modifying nameserver proxy
  