anchor.diff:      Leg = from_eq_tests(Eqt),
       {[Lh,['when'|Leg ++ Lg]|Lb],Vt3,St3}.
   
  +%% from_cls(ClauseFun, VarTable, State, Clauses) -> {Clauses,VarTable,State}.
  +%%  Translate the clauses but only export variables that are defined
  +%%  in all clauses, the intersection of the variables.
  +
   from_cls(Fun, Vt0, St0, [C]) ->
       {Lc,Vt1,St1} = Fun(C, Vt0, St0),
       {[Lc],Vt1,St1};
  
positive.code:         {error,Error} -> erlang:error(Error)
      end.
  
  new_to_var(#to{vc=C}=St) ->
      V = list_to_atom(lists:concat(["___",C,"___"])),
      {V,St#to{vc=C+1}}.
  
negative.code: from_expr({bin,_,Segs}, Vt0, St0) ->
      {Ss,Vt1,St1} = from_bitsegs(Segs, Vt0, St0),
      {[binary|Ss],Vt1,St1};
  from_expr({map,_,Pairs}, Vt0, St0) ->           %Build a map
      {Ps,Vt1,St1} = from_map_pairs(Pairs, Vt0, St0),
      {[map|Ps],Vt1,St1};
  from_expr({map,_,Map,Pairs}, Vt0, St0) ->       %Update a map
      {Es,As} = split_map_pairs(Pairs),
      {Lm,Vt1,St1} = from_expr(Map, Vt0, St0),
      {Les,Vt2,St2} = from_map_pairs(Es, Vt1, St1),
      {Aes,Vt3,St3} = from_map_pairs(As, Vt2, St2),
      %% First do updates then normal sets as these can over write.
      Lum = if Les =:= [] -> Lm;                  %Expand update fields
               true -> ['map-update',Lm|Les]
            end,
      Lam = if Aes =:= [] -> Lum;                 %Expand set fields
               true -> ['map-set',Lum|Aes]
            end,
      {Lam,Vt3,St3};
  %% Core closure special forms.
  from_expr({'fun',_,{clauses,Cls}}, Vt, St0) ->
      {Lcls,St1} = from_fun_cls(Cls, Vt, St0),
  