anchor.diff:                                              is_binary(Host) ->
       case ets:lookup(drains, DrainId) of
           [#drain{channel_id=ChannelId, token=Token}] ->
  -            case ets:match_object(drains, #drain{id='_', channel_id=ChannelId, token='_', resolved_host='_', host=Host, port=Port, tcp='_'}) of
  +            case ets:match_object(drains, #drain{channel_id=ChannelId, host=Host, port=Port, _='_'}) of
                   [_] ->
                       {error, already_exists};
                   [] ->
  
positive.code:                                                    is_integer(ChannelId),
                                                     is_binary(Host),
                                                     (is_integer(Port) orelse Port == undefined) ->
      case ets:match_object(drains, #drain{id='_', channel_id=ChannelId, token='_', resolved_host='_', host=Host, port=Port, tcp='_'}) of
          [_] ->
              {error, already_exists};
          [] ->
  
negative.code: 
  new_token(Retries) ->
      Token = list_to_binary("d." ++ uuid:to_string(uuid:v4())),
      case ets:match_object(drains, #drain{token=Token, _='_'}) of
          [#drain{}] -> new_token(Retries-1);
          [] -> Token
      end.
  