anchor.diff:  %%   in_tcp_state(S, [listen, syn_rcvd, established, close_wait]) andalso
   %%   S#socket.socket_type == listen.
   
  +%% We cannot accept when we closed the listen socket, it's not there any more!
  +
   accept_pre(S) ->
     [] /= S#state.sockets.
   
  
positive.code:       Sock = get_socket(S, Id),
        ?SET(Id, accepts, Sock#socket.accepts ++ [?SELF]),
        ?MATCH(NewId, ?BLOCK({accept, ?SELF})),
        ?APPLY(set_socket, [NewId])
    end.
  
  accept_process(_S, [_Socket, _]) ->
  
negative.code:   Sock = get_socket(S, Id),
    case Sock#socket.tcp_state of
      syn_rcvd ->
        ?SET(Id, tcp_state, established),
        P = Sock#socket.parent,
        case get_socket(S, P) of
          #socket{accepts = [Pid | Pids]} ->
            ?UNBLOCK({accept, Pid}, Id),
            ?SET(P, accepts, Pids);
          %% false -> %% parent closed, we need to send FIN (patch against impl).
          %%   ?APPLY(do_close, [Id]);
          _ -> ?EMPTY
        end;
      fin_wait_1 ->
        ?SET(Id, tcp_state, fin_wait_2);
      closing ->
  