anchor.diff:  -export([send/2, send/3, connect/2]).
   -export([get_listening/2, get_listening/3, is_local/1, is_local/2, is_local_ip/1]).
   -export([pid/1, get_nkport/1, get_local/1, get_remote/1, get_user/1]).
  --export([resolve/1, resolve/2]).
  +-export([resolve/1, resolve/2, multi_resolve/1, multi_resolve/2]).
   
   -export_type([group/0, transport/0, protocol/0, nkport/0]).
   -export_type([listener_opts/0, connect_opts/0, send_opts/0]).
  
positive.code:         throw:Throw -> {error, Throw}
      end;
  
  resolve([Uri|Rest], Opts, Acc) ->
      case nklib_parse:uris(Uri) of
          error ->
              {error, {invalid_uri, Uri}};
          Uris ->
              resolve(Uris++Rest, Opts, Acc)
      end.
  
  
  
negative.code: 
  
  %% @private
  -spec resolve(nklib:user_uri(), map()) -> 
      {ok, [raw_connection()], map()} |
      {error, term()}.
  
  resolve(#uri{scheme=Scheme}=Uri, Opts) ->
      #uri{domain=Host, path=Path, ext_opts=UriOpts, ext_headers=Headers} = Uri,
      UriOpts1 = [{nklib_parse:unquote(K), nklib_parse:unquote(V)} || {K, V} <- UriOpts],
      UriOpts2 = case Host of
  