anchor.diff:        pick_values(Ps, I)
       end.
   
  +exclude_from_set(Set, Tree, S) ->
  +    gb_sets:fold(
  +      fun(Uri, Acc) ->
  +              exclude_peer_uri(Uri, Acc, S)
  +      end, Tree, Set).
  +
  +
   exclude_peer_uri(Uri, T, S) ->
       case lookup_peer(Uri, S) of
           none ->
  
positive.code:               %% need to fetch the stored peer record to get proper block
                %% status
                Key = hash_uri(P0#peer.uri),
                P = gb_trees:get(Key, Peers),
                case has_been_seen(Key, Peers) of
                    true -> ok;
                    false ->
                        %% TODO: use jobs workers instead
                        maybe_ping_peer(P, State)
                end
        end, PeerRecs),
      {noreply, State1};
  handle_cast({remove, PeerUri}, State = #state{peers = Peers}) ->
      HashUri = hash_uri(normalize_uri(PeerUri)),
      case gb_trees:lookup(HashUri, Peers) of
  
negative.code: -record(state, {peers :: gb_trees:tree(binary(),peer()),
                  aliases :: gb_trees:tree(uri(), uri()),
                  blocked = gb_sets:new() :: gb_sets:set(uri()),
                  errored = gb_sets:new() :: gb_sets:set(uri()),
                  local_peer_uri :: uri(),
                  local_peer_host :: string() | undefined,
                  local_peer_port :: integer() | undefined}).
  