anchor.diff:  -type pieceset() :: etorrent_pieceset:pieceset().
   -type monitorset() :: etorrent_monitorset:monitorset().
   
  --record(subscription, {
  +-record(watcher, {
       pid :: pid(),
       ref :: reference(),
       tag :: term(),
  
positive.code:         torrent_id=TorrentID,
          num_peers=array:new([{default, 0}]),
          peer_monitors=etorrent_monitorset:new(),
          subscriptions=[]},
      {ok, InitState}.
  
  
  
negative.code:             Pieceset = etorrent_monitorset:fetch(Pid, Monitors),
              NewNumpeers = decrement(Pieceset, Numpeers),
              NewMonitors = etorrent_monitorset:delete(Pid, Monitors),
              send_updates(Pieceset, Watchers, NewNumpeers),
              INewState = State#state{
                  peer_monitors=NewMonitors,
                  num_peers=NewNumpeers},
              INewState;
          false ->
              NewWatchers = lists:keydelete(Ref, #watcher.ref, Watchers),
              State#state{watchers=NewWatchers}
      end,
      {noreply, NewState}.
  
  