anchor.diff:  encode(0) -> record;
   encode(1) -> list;
   encode(2) -> map.
  -
  -container(pkt) -> 0;
  -container(msg) -> 1;
  -container(0) -> pkt;
  -container(_) -> msg.
   
   msg([H|_] = Msg, record = E, diameter_gen_base_rfc3588)
     when H == 'ACR';
  
positive.code: %% How to decode incoming messages.
  -define(DECODINGS, [record, false, map, list]).
  
  %% How to send answers, in a diameter_packet or not.
  -define(CONTAINERS, [pkt, msg]).
  
  %% Which dictionary to use in the clients.
  -define(RFCS, [rfc3588, rfc6733, rfc4005]).
  
  
negative.code:                   msg(Req, Enc, Dict0),
                    [{extra, [{Name, Group}, diameter_lib:now()]} | Opts]).
  
  origin({D,E}) ->
      4*decode(D) + encode(E);
  
  origin(N) ->
      {decode(N bsr 2), encode(N rem 4)}.
  
  %% Map atoms. The atoms are part of (constructed) group names, so it's
  %% good that they're readable.
  