anchor.diff:                      {ok, Parse#parse{ok=Ok2}};
                   {error, {field, Key}} ->
                       {error, {syntax_error, path_key(Key, Parse)}};
  -                {error, {missing_field, Key}} ->
  -                    {error, {missing_field, path_key(Key, Parse)}};
  +                {error, {field_missing, Key}} ->
  +                    {error, {field_missing, path_key(Key, Parse)}};
                   {error, Error} ->
                       {error, Error}
               end;
  
positive.code: 
  -type error() ::
      {syntax_error, Path :: binary()} |
      {missing_field, binary()} |
      term().                             % When syntax_fun() returns {error, term()}
  
  -type out() :: #{key() => term()}.
  
negative.code:     },
      Spec3 = nklib_util:map_merge(Spec, Mand),
  
      {error, {field_missing, <<"field1">>}} = parse(#{}, Spec3),
      {error, {field_missing, <<"field2">>}} = parse(#{field1=>1}, Spec3),
      {error, {field_missing, <<"field2.field4">>}} = parse(#{field1=>1, field2=>#{}}, Spec3),
      {error, {field_missing, <<"field2.field5">>}} = parse(#{field1=>1, field2=>#{field4=>22}}, Spec3),
      {error, {field_missing, <<"field2.field5.field6">>}} = parse(#{field1=>1, field2=>#{field4=>22, field5=>#{}}}, Spec3),
      {ok, _, []} = parse(#{field1=>1, field2=>#{field4=>22, field5=>#{field6=>33}}}, Spec3),
  
      Spec4 = nklib_util:map_merge(Spec3, Def),
      {error, {field_missing, <<"field2.field4">>}} = parse(#{}, Spec4),
  
      {ok, _, _} = parse(#{field2=>#{field4=>22}}, Spec4),
      ok.
  