anchor.diff:  	    prop_type_info(AnnAST1, TypeInfo)
       end.
   
  -
  -do_type_ann(Form) ->
  +type_ann_file(File, SearchPaths, TabWidth) ->
  +    {ok, {AnnAST, _Info1}} = refac_util:parse_annotate_file(File, true, SearchPaths),
  +    TestFrameWorkUsed = refac_util:test_framework_used(File),
  +    start_type_env_process(),
  +    Fs = refac_syntax:form_list_elements(AnnAST),
  +    Funs = sorted_funs(File),
  +    Funs1 = lists:map(fun({{M,F, A},FunDef}) ->
  +			      {{M, F, A},do_type_ann(File, FunDef, TestFrameWorkUsed, SearchPaths, TabWidth)} end, Funs), 
  +    Fs1 = lists:map(fun(Form) ->
  +			    case refac_syntax:type(Form) of
  +				function ->
  +				    Ann = refac_syntax:get_ann(Form),
  +				    {value, {fun_def, {M, F, A, _, _}}}=lists:keysearch(fun_def,1,Ann),
  +				    {value, {{M, F, A}, FunDef}} =lists:keysearch({M, F, A}, 1, Funs1),
  +				    FunDef;
  +				_ -> Form
  +			    end
  +		    end, Fs),
  +    AnnAST1 = refac_util:rewrite(AnnAST, refac_syntax:form_list(Fs1)),
  +    case get_all_type_info() of 
  +	[] ->
  +	    stop_type_env_process(),
  +	    AnnAST1;
  +	TypeInfo ->
  +	    ?debug("Typeinfo:\n~p\n", [TypeInfo]),
  +	    stop_type_env_process(),
  +	    prop_type_info(AnnAST1, TypeInfo)
  +    end.
  +
  +
  +
  +do_type_ann(FileName, Form, TestFrameWorkUsed, SearchPaths, TabWidth) ->
       case refac_syntax:type(Form) of
         function ->
   	  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, refac_syntax:clause_patterns(C))
  +	  Cs = [refac_util:full_buTP(fun do_type_ann_clause/2, C, 
  +				     {FileName, refac_syntax:clause_patterns(C), 
  +				      TestFrameWorkUsed, SearchPaths, TabWidth})
   		|| C <- refac_syntax:function_clauses(Form)],
   	  CsPats = [refac_syntax:clause_patterns(C) || C <- refac_syntax:function_clauses(Form)],
   	  TypeInfo = get_all_type_info(),
  
positive.code: 				_ -> Form
  			    end
  		    end, Fs),
      AnnAST1 = refac_syntax:form_list(Fs1),
      case get_all_type_info() of 
  	[] ->
  	    stop_type_env_process(),
  
negative.code: try_eval(Expr, Cond) when is_function(Expr) ->
      fun (X) -> try_eval(Expr(X), Cond) end;
  try_eval(Expr, Cond) ->
      try_eval(node, Expr, [], 8, Cond).
  
  try_eval(FileName, E, SearchPaths, TabWidth, Cond) ->	
      As = refac_syntax:get_ann(E),
      case lists:keysearch(value, 1, As) of
  	{value, {value, {{_, V}, _DefPos}}} ->
  	    case Cond(V) of
  		true ->
  		    ?debug("V:\n~p\n", [V]),
  		    V;
  		_ -> '_'
  	    end;
  	_ -> 
  	    case refac_rename_fun:try_eval(FileName,E,SearchPaths, TabWidth) of
  		{value, V} ->
  		    ?debug("V:\n~p\n", [V]),
  		    case Cond(V) of
  			true -> V;
  			_ -> '_'
  		    end;
  		{error, _} ->'_'
  	    end
      end.
  		    
  try_eval_length(Expr) when is_function(Expr) ->
      fun (X) -> try_eval_length(Expr(X)) end;
  try_eval_length(Expr) ->
  