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: -type post_check_fun() ::
      fun(([{term(), term()}]) ->
          ok | {ok, [{term(), term()}]} |
          {error, {field, term()}} | {error, {missing_field, term()}} | {error, term()}).
  
  
  -type parse_opts() ::
  
negative.code:         '__mandatory' => [<<"field2">>]
      },
  
      {error, {field_missing, <<"field2">>}} = parse(#{}, Spec3),
      {error, {field_missing, <<"field2.field4">>}} = parse(#{field2=>#{}}, Spec3),
      {error, {field_missing, <<"field2.field4">>}} = parse(#{field2=>[#{field3=>a}]}, Spec3),
      {error, {field_missing, <<"field2.field4">>}} = parse(#{field2=>[#{field4=>1}, #{}]}, Spec3),
      {ok, #{<<"field2">> := [#{<<"field4">> := 1}]}, []} = parse(#{field2=>[#{field4=>1}]}, Spec3),
      {error, {field_missing, <<"base.field2.field4">>}} = parse(#{field2=>#{}}, Spec3, #{path=><<"base">>}),
  
      Spec4 = #{
          <<"field2">> =>
  