anchor.diff:          #socket{blocked = [Pid | Pids]} ->
             ?UNBLOCK({accept, Pid}, Id),
             ?SET(P, blocked, Pids);
  -        false -> %% parent closed, we need to send FIN (patch against impl).
  -          ?APPLY(do_close, [Id]);
  -        _ -> ?EMPTY
  +        false -> ?EMPTY;
  +        _     -> ?UPD(P, accept_queue, Q, Q ++ [Id])
         end;
       fin_wait_1 ->
         ?SET(Id, tcp_state, fin_wait_2);
  
positive.code: 
  -define(SET(Id, Key, Value), ?APPLY(set, [Id, #socket.Key, Value])).
  -define(INC(Id, Key),        ?APPLY(inc, [Id, #socket.Key])).
  
  -define(MAX_SOCKETS, 5).
  
  -record(socket,{tcp_state = undefined, ip, port, rip, rport, socket,
                 socket_type, seq, rcvd, rseq, id, parent, blocked = []}).
  
  -record(state, {ip, sockets = []}).
  
  
negative.code:   end.
  
  accept_callouts(S, [_Socket, Id]) ->
    Sock = get_socket(S, Id),
    case Sock#socket.accept_queue of
      [NewId | _] ->
        ?UPD(Id, accept_queue, [_ | Q], Q),
        ?APPLY(set_socket, [NewId]);
      [] ->
        ?SET(Id, blocked, Sock#socket.blocked ++ [?SELF]),
        ?MATCH(NewId, ?BLOCK({accept, ?SELF})),
        ?WHEN(NewId /= closed, ?APPLY(set_socket, [NewId]))
  