anchor.diff:  %% Basically illegal syntax which maybe generated by internal tools.
   from_pat({call,_,{atom,_,F},As}, Vt0, St0) ->
       %% This will never occur in real code but for macro expansions.
  -    {Las,Eqt,Vt1,St1} = from_pat_list(As, Vt0, St0),
  +    {Las,Eqt,Vt1,St1} = from_pats(As, Vt0, St0),
       {[F|Las],Eqt,Vt1,St1}.
   
  -from_pat_list([P|Ps], Vt0, St0) ->
  +from_pats([P|Ps], Vt0, St0) ->
       {Lp,Eqt,Vt1,St1} = from_pat(P, Vt0, St0),
  -    {Lps,Eqts,Vt2,St2} = from_pat_list(Ps, Vt1, St1),
  +    {Lps,Eqts,Vt2,St2} = from_pats(Ps, Vt1, St1),
       {[Lp|Lps],Eqt++Eqts,Vt2,St2};
  -from_pat_list([], Vt, St) -> {[],[],Vt,St}.
  +from_pats([], Vt, St) -> {[],[],Vt,St}.
   
   from_pat_map_assocs([{map_field_exact,_,Key,Val}|As], Vt0, St0) ->
       {Lk,Eqt1,Vt1,St1} = from_pat(Key, Vt0, St0),
  
positive.code: 
  -module(lfe_trans).
  
  -export([from_expr/1,from_expr/2,from_body/1,from_body/2,from_lit/1,
           to_expr/2,to_lit/2]).
  
  -import(lists, [map/2,foldl/3,mapfoldl/3,foldr/3,splitwith/2]).
  
  -define(Q(E), [quote,E]).                       %We do a lot of quoting
  
  -record(from, {vc=0                             %Variable counter
                }).
  
negative.code:     {Le,Vt2,St2} = from_expr(E, Vt1, St1),
      {Lqs,Vt3,St3} = from_lc_quals(Qs, Vt2, St2),
      Leg = from_eq_tests(Eqt),
      Lbody = from_add_guard(Leg, Le),
      {[['<-',Lp|Lbody]|Lqs],Vt3,St3};
  from_lc_quals([T|Qs], Vt0, St0) ->
      {Lt,Vt1,St1} = from_expr(T, Vt0, St0),
      {Lqs,Vt2,St2} = from_lc_quals(Qs, Vt1, St1),
  