anchor.diff:  
   %% reverse(rumerge(F,reverse(A),reverse(B))) is equal to umerge(F,A,B).
   
  --spec rumerge(fun((X, Y) -> boolean()), [X], [Y]) -> [_].
  +-spec rumerge(fun((X, Y) -> boolean()), [X], [Y]) -> [(X | Y)].
   
   rumerge(Fun, T1, []) when is_function(Fun, 2) ->
       T1;
  
positive.code:     {[R|Rs],Accu2};
  mapfoldl(F, Accu, []) when is_function(F, 2) -> {[],Accu}.
  
  -spec mapfoldr(fun((T, _) -> {_, _}), _, [T]) -> {[_], _}.
  
  mapfoldr(F, Accu0, [Hd|Tail]) ->
      {Rs,Accu1} = mapfoldr(F, Accu0, Tail),
  
negative.code:     [H|keydelete3(Key, N, T)];
  keydelete3(_, _, []) -> [].
  
  -spec keyreplace(term(), pos_integer(), [tuple()], tuple()) -> [tuple()].
  
  keyreplace(K, N, L, New) when is_integer(N), N > 0, is_tuple(New) ->
      keyreplace3(K, N, L, New).
  