anchor.diff:      Name = env__new_vname(Env),
       c_var(Name).
   
  +%% The way a template variable is used makes it necessary
  +%% to make sure that it is unique in the entire function.
  +%% Therefore, template variables are atoms with the prefix "@i".
  +
  +new_template_var(Env) ->
  +    Name = env__new_tname(Env),
  +    c_var(Name).
  +
   residualize_var(R, S) ->
       S1 = count_size(weight(var), S),
       {ref_to_var(R), st__set_var_referenced(R#ref.loc, S1)}.
  
positive.code: 	    T = make_data_skel(data_type(E), Ts),
  	    E1 = update_data(E, data_type(E),
  			     [hd(get_ann(T)) || T <- Ts]),
  	    V = new_var(Env1),
  	    Env2 = env__bind(var_name(V), E1, Env1),
  	    {set_ann(T, [V]), [V | Vs1], Env2};
  	false ->
  
negative.code: 		    Env2 = env__bind(V, E1, Env1),
  		    {T, Vs1, Env2};
  		_ ->
  		    V = new_template_var(Env0),
  		    Env1 = env__bind(var_name(V), E, Env0),
  		    {set_ann(V, [V]), [V | Vs0], Env1}
  	    end
  