anchor.diff:              {set_change, Key, ToAdd, ToRemove} ->
                   {TLog1, Result1} = single_req(TLog0, {rdht_tx_read, Key}),
                   case Result1 of
  +                    _ when (not erlang:is_list(ToAdd)) orelse
  +                               (not erlang:is_list(ToRemove)) ->
  +                        Error = {fail, not_a_list},
  +                        {set_tlog_status_at_key(TLog1, Key, Error), Error};
                       {ok, OldValue} when erlang:is_list(OldValue) ->
                           case ToAdd =:= [] andalso ToRemove =:= [] of
                               true -> {TLog1, {ok}}; % no op
  
positive.code:             map_phase1(Rest, Key, [{rdht_tx_read, Key} | FirstReqs])
      end.
  
  %% @doc Phase 2 uses the the TLog generated by executing the requests of
  %%      phase 1 and executes all requests in their original order upon it.
  %%      Since everything should be in the TLog, this should not cause any
  
negative.code:                         NewValue2 = util:minus(ToAdd, ToRemove),
                          single_req(TLog1, {rdht_tx_write, Key, encode_value(NewValue2)});
                      {ok, _} ->
                          Error = {fail, not_a_list},
                          {set_tlog_status_at_key(TLog1, Key, Error), Error};
                      X when erlang:is_tuple(X) ->
                          {TLog1, X}
                  end;
              {number_add, Key, X} ->
                  {TLog1, Result1} = single_req(TLog0, {rdht_tx_read, Key}),
                  case Result1 of
                      _ when (not erlang:is_number(X)) ->
                          Error = {fail, not_a_number},
                          {set_tlog_status_at_key(TLog1, Key, Error), Error};
                      {ok, OldValue} when erlang:is_number(OldValue) ->
                          case X == 0 of % also accepts 0.0
                              true -> {TLog1, {ok}}; % no op
  