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