anchor.diff:      {join, get_number_of_samples, Samples::non_neg_integer(), Conn::connection()} |
       {join, get_candidate_response, OrigJoinId::?RT:key(), Candidate::lb_op:lb_op(), Conn::connection()} |
       {join, join_response, Succ::node:node_type(), Pred::node:node_type(), MoveFullId::slide_op:id(), CandId::lb_op:id()} |
  -    {join, join_response, not_responsible, CandId::lb_op:id()} |
  +    {join, join_response, not_responsible | busy, CandId::lb_op:id()} |
       {join, known_hosts_timeout, JoinUUId::pos_integer()} |
       {join, lookup_timeout, Conn::connection(), JoinId::?RT:key(), JoinUUId::pos_integer()} |
       {join, get_number_of_samples_timeout, Conn::connection(), JoinUUId::pos_integer()} |
  
positive.code:     State;
  process_join_msg({join, join_response, _Succ, _Pred, _MoveFullId, _CandId} = _Msg, State) ->
      State;
  process_join_msg({join, join_response, not_responsible, _CandId} = _Msg, State) ->
      State;
  process_join_msg({join, lookup_timeout, _Conn, _Id, _JoinId} = _Msg, State) ->
      State;
  
negative.code:         _ ->
              ?TRACE("[ ~.0p ]~n  ignoring join_request from ~.0p due to a running slide~n",
                     [self(), NewPred]),
              ?TRACE_SEND(node:pidX(NewPred), {join, join_response, busy, CandId}),
              comm:send(node:pidX(NewPred), {join, join_response, busy, CandId}),
              State
      end;
  %% userdevguide-end dht_node_join:join_request1
  