anchor.diff:  	    {error, einval}
       end.
   
  -start_opts([{sys_debug, D} | Opts]) ->
  -    [{debug, D} | start_opts(Opts)];
  -start_opts([Opt | Opts]) ->
  -    [Opt | start_opts(Opts)];
  -start_opts([]) -> [].
  -
   
   -compile({inline, [ignore_optname/1]}).
   ignore_optname(Tag) ->
  
positive.code:     error(badarg, [Arg]).
  
  
  socket_open(Domain, Proto, #{fd := FD} = ExtraOpts, Extra) ->
      Opts =
          (maps:merge(Extra, maps:remove(fd, ExtraOpts)))
          #{dup      => false,
            domain   => Domain,
            type     => stream,
            protocol => Proto},
      %% ?DBG([{fd, FD}, {opts, Opts}]),
      socket:open(FD, Opts);
  socket_open(Domain, Proto, ExtraOpts, Extra) ->
      Opts = maps:merge(Extra, ExtraOpts),
      %% ?DBG([{netns, NS}, {opts, Opts}]),
      socket:open(Domain, stream, Proto, Opts).
  
  
  terminate(_Reason, State, {_P, _} = P_D) ->
  
negative.code: %% by throwing {ErrRef, badarg}.
  %%
  setopts_opts(ErrRef, Opts) ->
      SocketOpts = socket_opts(),
      ServerOpts = server_opts(),
      [Opt ||
          {Tag,_} = Opt <- Opts,
          if
              is_map_key(Tag, SocketOpts) -> true;
              is_map_key(Tag, ServerOpts) -> true;
              true ->
                  case ignore_optname(Tag) of
                      true  -> false; % ignore -> filter out
                      false ->
                          throw({ErrRef, badarg})
                  end
          end].
  
  
  
  