anchor.diff:      [?_assert(?state:choked(State)),
        ?_assertNot(?state:interested(State)),
        ?_assertNot(?state:seeder(State)),
  +     ?_assertEqual(0, ?rqueue:size(?state:requests(State))),
  +     ?_assertNot(?state:needreqs(State)),
        ?_assertError(badarg, ?state:pieces(State)),
        ?_assertError(badarg, ?state:interesting(0, State))].
   
  
positive.code: 
  -spec seeder(boolean(), peerstate()) -> peerstate().
  seeder(Status, Peerstate) ->
      #peerstate{seeder=Current} = Peerstate,
      Status orelse erlang:error(badarg),
      Peerstate#peerstate{seeder=Status}.
  
  
negative.code: 
  -spec needreqs(peerstate()) -> boolean().
  needreqs(Peerstate) ->
      #peerstate{choked=Choked, interested=Interested, requests=Requests} = Peerstate,
      Interested andalso not Choked andalso etorrent_rqueue:is_low(Requests).
  
  
  -ifdef(TEST).
  -include_lib("eunit/include/eunit.hrl").
  -define(state, ?MODULE).
  -define(pset, etorrent_pieceset).
  -define(rqueue, etorrent_rqueue).
  
  testsize() -> 8.
  
  