anchor.diff:  -dialyzer({no_return, do_getifaddrs/2}).
   
   do_getifaddrs(Filter, GetIfAddrs) ->
  -    case GetIfAddrs() of
  +    try GetIfAddrs() of
           {ok, IfAddrs0} when is_function(Filter) ->
               {ok, lists:filtermap(Filter, IfAddrs0)};
           {ok, IfAddrs0} when is_map(Filter) ->
  
positive.code:             {ok, lists:filtermap(FilterFun, IfAddrs0)};
          {error, _} = ERROR ->
              ERROR
      end.
  
  getifaddrs_filter_map(all) ->
  
negative.code: getifaddrs(Filter) when is_function(Filter, 1) ->
      do_getifaddrs(Filter, fun() -> prim_net:getifaddrs(#{}) end);
  getifaddrs(Namespace) when is_list(Namespace) ->
      getifaddrs(default, Namespace).
  -else.
  getifaddrs(Filter) when is_atom(Filter) orelse
                          is_map(Filter) orelse
  