anchor.diff:  
   
   -spec send_updates(pieceset() | pos_integer(), [#watcher{}],
  -                   array(), timeserver()) -> [#watcher{}].
  +                   table(), timeserver()) -> [#watcher{}].
   send_updates(Index, Watchers, Numpeers, Time) when is_integer(Index) ->
       HasChanged = fun(Watchedset) ->
           etorrent_pieceset:is_member(Index, Watchedset)
  
positive.code: %% updated: changed=true,  timer_ref=reference()
  
  -record(state, {
      torrent_id :: torrent_id(),
      timeserver :: timeserver(),
      num_peers  :: array(),
      peer_monitors :: monitorset(),
      watchers :: [#watcher{}]}).
  
  -compile({no_auto_import, [monitor/2, demonitor/1]}).
  -import(erlang, [monitor/2, demonitor/1]).
  
negative.code:     {ok, State}.
  
  
  -spec sorted_piecelist([pieceindex()], table()) -> [pieceindex()].
  sorted_piecelist(Piecelist, Numpeers) when is_list(Piecelist) ->
      Tagged = [{ets:lookup_element(Numpeers, I, 2), I} || I <- Piecelist],
      Sorted = lists:sort(Tagged),
      [I || {_, I} <- Sorted].
  
  
  -spec decrement(pieceset(), table()) -> table().
  decrement(Pieceset, Numpeers) ->
      etorrent_pieceset:foldl(fun(Piece, Acc) ->
          ets:update_counter(Numpeers, Piece, -1),
  