anchor.diff:                  zone_signing_alg = ZskAlg,
                   inception = iso8601:parse(Inception),
                   valid_until = iso8601:parse(ValidUntil)},
  -    parse_json_keys(Rest, [KeySet | Keys]).
  +    parse_json_keys(Rest, [KeySet | Keys]);
  +%% pre-sort the proplist, to be consumed in previous pattern match
  +parse_json_keys([Proplist], Acc) ->
  +    parse_json_keys([lists:sort(Proplist)], Acc).
   
   to_crypto_key(RsaKeyBin) ->
       % Where E is the public exponent, N is public modulus and D is the private exponent
  
positive.code:     DistinctRecords = lists:usort(FilteredRecords),
      {Name, Sha, DistinctRecords, parse_json_keys(JsonKeys)}.
  
  parse_json_keys(JsonKeys) ->
      parse_json_keys(JsonKeys, []).
  
  parse_json_keys([], Keys) ->
      Keys;
  parse_json_keys([[{<<"ksk">>, KskBin},
                    {<<"ksk_keytag">>, KskKeytag},
                    {<<"ksk_alg">>, KskAlg},
                    {<<"zsk">>, ZskBin},
                    {<<"zsk_keytag">>, ZskKeytag},
                    {<<"zsk_alg">>, ZskAlg},
                    {<<"inception">>, Inception},
                    {<<"until">>, ValidUntil}]
                   | Rest],
                  Keys) ->
      KeySet =
  
negative.code:     lager:info("Registering custom parsers (modules: ~p)", [Modules]),
      gen_server:call(?SERVER, {register_parsers, Modules}).
  
  %% @doc Register a custom parser module.
  -spec register_parser(module()) -> ok.
  register_parser(Module) ->
      lager:info("Registering custom parser (module: ~p)", [Module]),
  