anchor.diff:      Avar = #c_var{name='A'},
       Match =
   	fun (A, P, E) ->
  -		C1 = #c_clause{pats=[P], guard=#c_literal{val=true}, body=E},
  +		C1 = #c_clause{anno=Anno, pats=[P], guard=#c_literal{val=true}, body=E},
   		Err = #c_tuple{es=[#c_literal{val='badmatch'}, X]},
  -		C2 = #c_clause{pats=[X], guard=#c_literal{val=true},
  +		C2 = #c_clause{anno=Anno, pats=[X], guard=#c_literal{val=true},
   			       body=match_fail(Anno, Err)},
   		#c_case{arg=A, clauses=[C1, C2]}
   	end,
  -    C1 = #c_clause{pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
  +    C1 = #c_clause{anno=Anno, pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
   %%% Tuple passing version
   		   body=Match(#c_apply{anno=Anno,
   				       op=Loop,
  
positive.code: %%% 				     body=#c_values{es=[#c_cons{hd=X, tl=Xs},
  %%% 							A]}}
  			     )},
      C2 = #c_clause{pats=[#c_literal{val=[]}],
  		   guard=#c_call{module=#c_literal{val=erlang},
  				 name=#c_literal{val=is_function},
  				 args=[F, #c_literal{val=2}]},
  
negative.code:     F = #c_var{name='F'},
      Xs = #c_var{name='Xs'},
      X = #c_var{name='X'},
      C1 = #c_clause{anno=Anno,
                     pats=[#c_cons{hd=X, tl=Xs}], guard=#c_literal{val=true},
  		   body=#c_seq{arg=#c_apply{anno=Anno, op=F, args=[X]},
  			       body=#c_apply{anno=Anno, op=Loop, args=[Xs]}}},
      C2 = #c_clause{anno=Anno, pats=[#c_literal{val=[]}],
  		   guard=#c_call{module=#c_literal{val=erlang},
  				 name=#c_literal{val=is_function},
  				 args=[F, #c_literal{val=1}]},
  		   body=#c_literal{val=ok}},
      Err = #c_tuple{es=[#c_literal{val='function_clause'}, F, Xs]},
      C3 = #c_clause{anno=Anno, pats=[Xs], guard=#c_literal{val=true},
  		   body=match_fail([{function_name,{'lists^foreach',1}}|Anno], Err)},
      Fun = #c_fun{vars=[Xs],
  		 body=#c_case{arg=Xs, clauses=[C1, C2, C3]}},
  