anchor.diff:  
   
   %% @private
  -parse_opt_list(list, _SyntaxOp, Key, [], Parse, Acc) ->
  -    {ok, Key, lists:reverse(Acc), Parse};
  -
  -parse_opt_list(slist, _SyntaxOp, Key, [], Parse, Acc) ->
  -    {ok, Key, lists:sort(Acc), Parse};
  -
  -parse_opt_list(ulist, _SyntaxOp, Key, [], Parse, Acc) ->
  -    {ok, Key, lists:usort(Acc), Parse};
  +parse_opt_list(list, SyntaxOp, Key, [], Parse, Acc) ->
  +    check_unique_key(Key, lists:reverse(Acc), SyntaxOp, Parse);
  +
  +parse_opt_list(slist, SyntaxOp, Key, [], Parse, Acc) ->
  +    check_unique_key(Key, lists:sort(Acc), SyntaxOp, Parse);
  +
  +parse_opt_list(ulist, SyntaxOp, Key, [], Parse, Acc) ->
  +    check_unique_key(Key, lists:usort(Acc), SyntaxOp, Parse);
   
   parse_opt_list(ListType, SyntaxOp, Key, [Term | Rest], Parse, Acc) ->
       case parse_opt(SyntaxOp, Key, Term, Parse) of
  
positive.code:         Atom -> {ok, Atom}
      end.
  
  %% @private
  syntax_error(Key, Parse) ->
      {syntax_error, path_key(Key, Parse)}.
  
  
  %% @private
  
negative.code: %% Types
  %% ===================================================================
  
  -type syntax() ::
      #{
          key() => syntax_opt(),
          '__defaults' => #{key() => term()}  ,       % Defaults for this level
          '__mandatory' => [key()],                   % Mandatory fields for this level
          '__unique_keys' => [key()],                 % Checks that keys are unique in a list
          '__allow_unknown' => boolean(),             % Allow unknown fields
          '__post_check' => post_check_fun()
      }.
  
  
  -type syntax_opt() ::
      syntax_term() |
  