anchor.diff:      throw({syntax_error, nklib_util:to_binary(Key)}).
   
   
  +
  +%% @private
  +check_mandatory([], _) ->
  +    ok;
  +
  +check_mandatory([Key|Rest], All) ->
  +    case lists:keymember(Key, 1, All) of
  +        true -> check_mandatory(Rest, All);
  +        false -> {missing, Key}
  +    end.
  +
  +
   %% @private
   -spec do_parse_config(syntax_opt(), term()) ->
       {ok, term()} | error | unknown.
  
positive.code:             parse_config([], OK2, NoOK, Syntax, maps:remove(defaults, Opts));
          {ok, _, DefNoOK} ->
              lager:warning("Error parsing in defaults: ~p", [Defaults]),
              {error, {no_pk, DefNoOK}};
          {error, Error} ->
              lager:warning("Error parsing in defaults: ~p", [Defaults]),
              {error, Error}
  
negative.code:     #{
          return => map|list,         % Default is list
          path => binary(),           % Returned in errors
          defaults => map() | list(),
          mandatory => [atom()]
      }.
  
  
  