anchor.diff:  
   unopened({open, Socket, Receiver, Connect}, From,
            S0 = #state{ socket = undefined }) ->
  -    S = S0#state{ socket = Socket, receiver = Receiver },
  +    Monitor = monitor(process, Receiver),
  +    S = S0#state{ socket = Socket,
  +                  receiver_monitor = Monitor,
  +                  receiver = Receiver },
       write(S, Connect),
       case recv(S) of
           {ok, #connack{ return_code = ok }, Rest, S1} ->
  
positive.code:           parse_fun = undefined,
            rpcs = gb_trees:empty(),
            id_counter = 1,
            receiver = undefined
           }).
  
  -type(connection() :: pid()).
  
negative.code: %% otherwise in a `receive ..`, data will arrive here.
  handle_info({tcp, _S, Data}, opened, S0) ->
      S = process_data(Data, S0),
      {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.
  