anchor.diff:  from_expr_list(Es, Vt, St) -> mapfoldl2(fun from_expr/3, Vt, St, Es).
   
   %% from_icrt_cls(Clauses, VarTable, State) -> {Clauses,VarTable,State}.
  -%% from_fun_cls(Clauses, VarTable, State) -> {Clauses,VarTable,State}.
   %% from_icrt_cl(Clause, VarTable, State) -> {Clause,VarTable,State}.
   %%  If/case/receive/try clauses.
   %%  No ; in guards, so no guard sequence only one list of guard tests.
  
positive.code: %%  and detect when they reused in patterns.
  
  from_expr(E) ->
      {S,_,_} = from_expr(E, [], #fstate{}),
      S.
  
  from_expr(E, Vs0) ->
      {S,Vs1,_} = from_expr(E, Vs0, #fstate{}),
      {S,Vs1}.
  
  from_body(Es) ->
      {Les,_,_} = from_body(Es, [], #fstate{}),
      [progn|Les].
  
  from_body(Es, Vs0) ->
      {Les,Vs1,_} = from_body(Es, Vs0, #fstate{}),
      {[progn|Les],Vs1}.
  
  %% from_expr(AST, VarTable, State) -> {Sexpr,VarTable,State}.
  
  
negative.code:     mapfoldl2(Fun, Vt, St, Ps).
  
  to_pat_var(V, L, Vt, St0) ->
      case orddict:is_key(V, Vt) of
  	true ->
  	    {V1,St1} = new_to_var(St0),
  	    {{var,L,V1},orddict:store(V, V1, Vt),St1};
  	false ->
  	    {{var,L,V},orddict:store(V, V, Vt),St0}
      end.
  
  %% to_pat_bitsegs(Segs, LineNumber, VarTable, State) -> {Segs,State}.
  