anchor.diff:  %%@spec is_var_name(string())-> boolean()
   -spec(is_var_name(Name:: string())-> boolean()).
   is_var_name(Name) ->
  -    case Name of
  -      [] -> false;
  -      [H] -> is_upper(H) and (H =/= 95);
  -      [H| T] -> (is_upper(H) or (H == 95)) and is_var_name_tail(T)
  -    end.
  +    wrangler_misc:is_var_name(Name).
  +   
   
   %%@doc Returns `true' if a string is lexically a legal function name,
   %%      otherwise `false'.
   %%@spec is_fun_name(string())-> boolean()
   -spec(is_fun_name(string())-> boolean()).
   is_fun_name(Name) ->
  -    case Name of
  -      [H| T] -> is_lower(H) and is_var_name_tail(T);
  -      [] -> false
  -    end.
  -
  -is_var_name_tail(Name) ->
  -    case Name of
  -      [H| T] ->
  -	  (is_upper(H) or is_lower(H) or 
  -	   is_digit(H) or (H == 64) or (H == 95)) and
  -	    is_var_name_tail(T);
  -      [] -> true
  -    end.
  -
  -is_upper(L) -> (L >= 65) and (90 >= L).
  -
  -is_lower(L) -> (L >= 97) and (122 >= L).
  -
  -is_digit(L) -> (L >= 48) and (57 >= L).
  -
  +    wrangler_misc:is_fun_name(Name).
  +  
   
   %% =====================================================================
   %%@doc Returns all the variables, including both variable name and 
  
positive.code:          update_app_fun/2,
           update_app_args/2]).
  
  -export([parse_annotate_expr/1, 
           parse_annotate_expr/2,
           extended_parse_annotate_expr/1,
           extended_parse_annotate_expr/2,
           subst/2, 
           collect/3,
           match/2,
           match/3,
           search_and_transform/3,
           search_and_collect/3,
           meta_apply_templates/1]).
         
  -compile(export_all).
  
  -include("../include/wrangler.hrl").
  
negative.code:    
  is_meta_atom_name(AtomName) ->
      AtomName1 = atom_to_list(AtomName),
      wrangler_misc:is_fun_name(AtomName1) andalso
      lists:prefix("@", lists:reverse(AtomName1)).
  
  
  