anchor.diff:      new_vars_1(N-1, Anno, St1, [V|Vs]);
   new_vars_1(0, _, St, Vs) -> {Vs,St}.
   
  -function_clause(Ps, Name) ->
  -    function_clause(Ps, [], Name).
  -
   function_clause(Ps, LineAnno, Name) ->
  -    FcAnno = [{function_name,Name}],
  +    FcAnno = [{function_name,Name}|LineAnno],
       fail_clause(Ps, FcAnno,
   		ann_c_tuple(LineAnno, [#c_literal{val=function_clause}|Ps])).
  -
  -fail_clause(Pats, Arg) ->
  -    fail_clause(Pats, [], Arg).
   
   fail_clause(Pats, Anno, Arg) ->
       #iclause{anno=#a{anno=[compiler_generated]},
  
positive.code:     {Cs1,St1} = clauses(Cs0, St0),
      {Args,St2} = new_vars(Arity, St1),
      {Ps,St3} = new_vars(Arity, St2),		%Need new variables here
      Fc = function_clause(Ps, {Name,Arity}),
      Fun = #ifun{anno=#a{anno=lineno_anno(L, St3)},
  		id=[{id,Id}],				%We KNOW!
  		vars=Args,clauses=Cs1,fc=Fc},
      {Fun,[],St3}.
  
negative.code:     {E1,Es1 ++ Eps,St2};
  expr({'if',L,Cs0}, St0) ->
      {Cs1,St1} = clauses(Cs0, St0),
      Lanno = lineno_anno(L, St1),
      Fc = fail_clause([], Lanno, #c_literal{val=if_clause}),
      {#icase{anno=#a{anno=Lanno},args=[],clauses=Cs1,fc=Fc},[],St1};
  expr({'case',L,E0,Cs0}, St0) ->
      {E1,Eps,St1} = novars(E0, St0),
      {Cs1,St2} = clauses(Cs0, St1),
      {Fpat,St3} = new_var(St2),
      Lanno = lineno_anno(L, St2),
      Fc = fail_clause([Fpat], Lanno, c_tuple([#c_literal{val=case_clause},Fpat])),
      {#icase{anno=#a{anno=Lanno},args=[E1],clauses=Cs1,fc=Fc},Eps,St3};
  expr({'receive',L,Cs0}, St0) ->
      {Cs1,St1} = clauses(Cs0, St0),
  