anchor.diff:          torrent_id=TorrentID,
           num_peers=array:new([{default, 0}]),
           peer_monitors=etorrent_monitorset:new(),
  -        subscriptions=[]},
  +        watchers=[]},
       {ok, InitState}.
   
   
  
positive.code:     #state{
          peer_monitors=Monitors,
          num_peers=Numpeers,
          subscriptions=Subscriptions} = State,
      Prev = array:get(PieceIndex, Numpeers),
      NewNumpeers = array:set(PieceIndex, Prev + 1, Numpeers),
      NewMonitors = etorrent_monitorset:update(Pid, Pieceset, Monitors),
      send_updates(PieceIndex, Subscriptions, NewNumpeers),
      NewState = State#state{
          peer_monitors=NewMonitors,
          num_peers=NewNumpeers},
  
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}.
  
  