anchor.diff:  
   -record(state, {sock = undefined :: port() | undefined,
                   connect_info,
  +                packet_len = undefined,
                   buf = <<>> :: binary(),
                   ext_module,
                   ext_state,
  
positive.code: terminate_and_wait(_Reason, Pairs) ->
      [disconnect(Sock) || {_, Sock} <- Pairs],
      misc:terminate_and_wait(kill, [Pid || {Pid, _} <- Pairs]).
  
negative.code: handle_info({tcp, Socket, Data}, #state{sock = Socket} = State) ->
      %% Set up the socket to receive another message
      ok = inet:setopts(Socket, [{active, once}]),
  
      {noreply, process_data(Data, State), ?HIBERNATE_TIMEOUT};
  
  handle_info({tcp_closed, Socket}, State) ->
      ?log_debug("Socket ~p was closed. Closing myself. State = ~p", [Socket, State]),
  