anchor.diff:      syntax_fun() |
       '__defaults' |              % Defaults for this level #{atom() => term()}
       '__mandatory' |              % Mandatory fields for this level [atom()]
  -    '__post_check'.
  +    '__post_check'.             % See post_check_fun()
   
   
   -type key() :: atom().
  
positive.code:                     {ok, Parse};
                  {error, {field, Key}} ->
                      {error, {syntax_error, path_key(Key, Parse)}};
                  {error, Error} ->
                      {error, Error}
              end;
  
negative.code:         no_ok => [binary()],
          path => binary()
      }.
  
  -type post_check_fun() ::
      fun(([{term(), term()}]) ->
          ok | {error, {field, term()}} | {error, {missing_field, term()}} | {error, term()}).
  
  
  -type parse_opts() ::
      #{
  