anchor.diff:  
   %% incr/4
   
  -incr(F, A, SA, AM)
  -  when F == 'AVP';
  -       A == ?ANY;
  +incr(_, A, SA, AM)
  +  when A == ?ANY;
          A == 0;
          SA /= decode ->
       {undefined, AM};
  
positive.code:     [Failed | Rec] = Acc,
      [[{rc(Avp), Avp} | Failed] | Rec];
  
  %% No AVP of this name: try to pack as 'AVP'.
  acc2(Acc, Avp, I, Name, AvpName, 0, Strict, Mod, Opts) ->
      M = Avp#diameter_avp.is_mandatory,
      Arity = pack_arity(Name, AvpName, Opts, Mod, M),
      acc2(Acc, Avp, I, Name, 'AVP', Arity, Strict, Mod, Opts);
  
  %% Relaxed arities.
  acc2(Acc, Avp, _, _, AvpName, Arity, Strict, Mod, _)
    when Strict /= decode ->
  
negative.code: 
  incr(Name, Code, Vid, M, Mod, Strict, Opts, AM0) ->
      NameT = Mod:avp_name(Code, Vid), %% {AvpName, Type} | 'AVP'
      Field = field(NameT),            %% AvpName | 'AVP'
      Arity = avp_arity(Name, Field, Mod, Opts, M),
      if 0 == Arity, 'AVP' /= Field ->
              A = pack_arity(Name, Field, Opts, Mod, M),
              {NameT, 'AVP', A, incr('AVP', A, Strict, AM0)};
         true ->
              {NameT, Field, Arity, incr(Field, Arity, Strict, AM0)}
      end.
  
  %% Data is a truncated header if command_code = undefined, otherwise
  %% payload bytes. The former is padded to the length of a header if
  