anchor.diff:  	    lists:reverse(M, [])
       end.
   
  --spec keymap(fun((_) -> _), pos_integer(), [tuple()]) -> [tuple()].
  +-spec keymap(fun((term()) -> term()), pos_integer(), [tuple()]) -> [tuple()].
   
   keymap(Fun, Index, [Tup|Tail]) ->
      [setelement(Index, Tup, Fun(element(Index, Tup)))|keymap(Fun, Index, Tail)];
  
positive.code: 
  %% reverse(rmerge(reverse(A),reverse(B))) is equal to merge(I,A,B).
  
  -spec rmerge([_], [_]) -> [_].
  
  rmerge(T1, []) ->
      T1;
  
negative.code: 	    fsplit_2(Y, X, Fun, T, [], [])
      end.
  
  -spec merge(fun((X, Y) -> boolean()), [X], [Y]) -> [(X | Y)].
  
  merge(Fun, T1, [H2 | T2]) when is_function(Fun, 2) ->
      lists:reverse(fmerge2_1(T1, H2, Fun, T2, []), []);
  