anchor.diff:      mapfoldl2(Fun, Vt, St, Ps).
   
   to_pat_var(V, L, Vt, St0) ->
  -    case is_key(V, Vt) of
  +    case orddict:is_key(V, Vt) of
   	true ->
   	    {V1,St1} = new_to_var(St0),
  -	    {{var,L,V1},store(V, V1, Vt),St1};
  +	    {{var,L,V1},orddict:store(V, V1, Vt),St1};
   	false ->
  -	    {{var,L,V},store(V, V, Vt),St0}
  +	    {{var,L,V},orddict:store(V, V, Vt),St0}
       end.
   
   %% to_pat_bitsegs(Segs, LineNumber, VarTable, State) -> {Segs,State}.
  
positive.code:     end.
  
  to_expr_var(V, L, Vt, St) ->
      Var = case find(V, Vt) of
  	      {ok,V1} -> V1;
  	      error -> V
  	  end,
  
negative.code: from_pat({match,_,P1,P2}, Vt0, St0) ->		%Aliases
      {Lp1,Eqt1,Vt1,St1} = from_pat(P1, Vt0, St0),
      {Lp2,Eqt2,Vt2,St2} = from_pat(P2, Vt1, St1),
      {['=',Lp1,Lp2],Eqt1++Eqt2,Vt2,St2};
  %% 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),
      {[F|Las],Eqt,Vt1,St1}.
  
  from_pat_list([P|Ps], Vt0, St0) ->
      {Lp,Eqt,Vt1,St1} = from_pat(P, Vt0, St0),
  