anchor.diff:  %% function names, and process names. For an atom that represents a function name, we also 
   %% try to infer the function's defining module and the function'a arity.
   
  +
  +%%NOTE: THIS MODULE IS STILL UNDERDEVELOPEMENT!
  +
   -module(refac_type_annotation).
   
   -export([type_ann_ast/5, type_ann_file/3]).
  
positive.code: 	  Ann = refac_syntax:get_ann(Form),
  	  {value, {fun_def, {M, F, A, _, _}}}=lists:keysearch(fun_def,1,Ann),
  	  Name = refac_syntax:function_name(Form),
  	  Cs = [refac_util:full_buTP(fun do_type_ann_clause/2, C, 
  				     {FileName, refac_syntax:clause_patterns(C), 
  				      TestFrameWorkUsed, SearchPaths, TabWidth, Pid})
  
negative.code: -include("../include/wrangler.hrl").
  
  type_ann_ast(FileName, Info, AnnAST, SearchPaths, TabWidth) ->
      case lists:keysearch(module, 1, Info) of
        false -> AnnAST; %% this should only happen for .hrl files.
        {value, {module, ModName}} ->
  	  TestFrameWorkUsed = refac_util:test_framework_used(FileName),
  	  Pid = start_type_env_process(),
  	  Fs = refac_syntax:form_list_elements(AnnAST),
  	  Funs = sorted_funs(ModName, AnnAST),
  	  Funs1 = lists:map(fun ({{M, F, A}, FunDef}) ->
  				    {{M, F, A}, do_type_ann(FileName, FunDef, TestFrameWorkUsed, SearchPaths, TabWidth, Pid)}
  			    end, Funs),
  	  Fs1 = lists:map(fun (Form) ->
  				  case refac_syntax:type(Form) of
  				    function -> find_fun(Funs1, Form);
  				    _ -> Form
  				  end
  			  end, Fs),
  	  AnnAST1 = refac_util:rewrite(AnnAST, refac_syntax:form_list(Fs1)),
  	  case get_all_type_info(Pid) of
  	    [] ->
  		stop_type_env_process(Pid),
  		AnnAST1;
  	    TypeInfo ->
  		?debug("Typeinfo:\n~p\n", [TypeInfo]),
  		stop_type_env_process(Pid),
  		prop_type_info(AnnAST1, TypeInfo)
  	  end
      end.
  
  type_ann_file(L, SearchPaths, TabWidth) ->
  