anchor.diff:  
   delete(ChannelId, Host, Port) when is_integer(ChannelId), is_binary(Host) ->
       Port1 = if Port == "" -> undefined; true -> list_to_integer(Port) end,
  -    case ets:match_object(drains, #drain{id='_', channel_id=ChannelId, token='_', resolved_host='_', host=Host, port=Port1, tcp='_'}) of
  +    case ets:match_object(drains, #drain{channel_id=ChannelId, host=Host, port=Port1, _='_'}) of
           [#drain{id=DrainId}|_] ->
               delete(DrainId);
           _ ->
  
positive.code:                                             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
                  [_] ->
                      {error, already_exists};
                  [] ->
  
negative.code:                                                    is_integer(ChannelId),
                                                     is_binary(Host),
                                                     (is_integer(Port) orelse Port == undefined) ->
      case ets:match_object(drains, #drain{channel_id=ChannelId, host=Host, port=Port, _='_'}) of
          [_] ->
              {error, already_exists};
          [] ->
  