anchor.diff:  log_ok(X) -> log(ok(X)).
   
   ok({ok,X}) -> X.
  +
  +err([], Result) ->
  +    erlang:error(Result);
  +err([Reason|_], {error,Reason}) ->
  +    ok;
  +err([_|Reasons], Result) ->
  +    err(Reasons, Result).
   
   log(X) ->
       io:format("LOG[~w]: ~p~n", [self(),X]),
  
positive.code: 		   stream=1, ppid=0, context=0, assoc_id=S1AssocId}],
  	       <<"3: ",Data/binary>>} -> ok;
  	      Event2 ->
  		  {Loopback,P2,
  		   #sctp_paddr_change{
  			      addr={Loopback,_}, state=addr_available,
  			      error=0, assoc_id=S1AssocId}} =
  		      recv_event(Event2),
  		  ?line case log_ok(gen_sctp:recv(S1)) of
  			    {Loopback,P2,
  			     [#sctp_sndrcvinfo{
  				 stream=1, ppid=0, context=0,
  				 assoc_id=S1AssocId}],
  			     <<"3: ",Data/binary>>} -> ok
  			end
  	  end,
      ?line ok =
  	do_from_other_process(
  
negative.code:     ?line ClientFamily = get_family_by_addr(AddressToConnectTo),
      ?line io:format("Connecting to ~p ~p~n",
  		    [ClientFamily, AddressToConnectTo]),
      ?line ClientOpts =
  	[ClientFamily |
  	 case ClientFamily of
  	    inet6 ->
  		[{ipv6_v6only,true}];
  	    _ ->
  		[]
  	 end],
      ?line S2 = ok(gen_sctp:open(0, ClientOpts)),
      log(open),
      %% Verify client can connect
      ?line #sctp_assoc_change{state=comm_up} = S2Assoc =
  	ok(gen_sctp:connect(S2, AddressToConnectTo, P1, [])),
      log(comm_up),
      %% verify server side also receives comm_up from client
      ?line S1Assoc = recv_comm_up_eventually(S1),
      ?line Result = Fun(S1, ServerFamily, S1Assoc, S2, ClientFamily, S2Assoc),
  