anchor.diff:  %% otherwise in a `receive ..`, data will arrive here.
   handle_info({tcp, _S, Data}, opened, S0) ->
       S = process_data(Data, S0),
  -    {next_state, opened, S}.
  +    {next_state, opened, S};
  +handle_info({'DOWN', Ref, process, Pid, Reason}, opened,
  +            S0 = #state{ receiver_monitor = Ref,
  +                         receiver = Pid }) ->
  +    {stop, {receiver_down, Reason}, S0}.
   
   terminate(Reason, StateName, StatData) ->
       ok.
  
positive.code: 
  unopened({open, Socket, Receiver, Connect}, From,
           S0 = #state{ socket = undefined }) ->
      S = S0#state{ socket = Socket, receiver = Receiver },
      write(S, Connect),
      case recv(S) of
          {ok, #connack{ return_code = ok }, Rest, S1} ->
  
negative.code:           parse_fun = undefined,
            rpcs = gb_trees:empty(),
            id_counter = 1,
            receiver = undefined,
            receiver_monitor = undefined
           }).
  
  -type(connection() :: pid()).
  