anchor.diff:      refac_tuple_to_record:tuple_to_record_eclipse(File, FLine, FCol, LLine, LCol,
   						  RecName, FieldString, SearchPaths).
   
  -%%@private
  -%%@spec fun_to_process(FileName::filename(), Line::integer(), Col::integer(), ProcessName::string(), SearchPaths::[dir()]) ->term()
  +%%@private
  +%%@spec fun_to_process(FileName::filename(), Line::integer(), Col::integer(), ProcessName::string(), SearchPaths::[dir()]) ->term()
   -spec(fun_to_process/5::(filename(), integer(), integer(), string(), [dir()])->
   	     {error, string()} | undecidables | {ok, [filename()]}).
   fun_to_process(FileName, Line, Col, ProcessName, SearchPaths) ->
  
positive.code:     refac_tuple:tuple_funpar(FileName, Line, Col, list_to_integer(Number), SearchPaths).
  
  
  %%@private
  %% @spec tuple_funpar_eclipse(FileName::filename(), Line::integer(), Col::integer(), Number::string(), SearchPaths::[dir()]) -> term()
  
  -spec(tuple_funpar_eclipse/5::(filename(), integer(), integer(), string(), [dir()]) ->
  	     {error, string()} | {ok, [{filename(), filename(), string()}]}).
  
negative.code:     refac_move_fun:move_fun_eclipse(FileName, Line, Col, TargetModName, CreateNewFile, SearchPaths).
  
  
  %% ==================================================================================
  %% @doc The duplicated code detector that only works with the current Erlang buffer.
  %% <p> This function reports the duplicated code fragments found in the current Erlang buffer. It does 
  %% not remove those code clones. The user will be prompted for two parameters: the minimum number of 
  %% tokens a cloned code fragment should have, and the minimum number of times a code fragment is duplicated.
  %% </p>
  %% <p> The current version of the duplicated code detector can report clones that are syntactically 
  %% identical after consistent renaming of variables, except for variations in literals, layout and comments.
  %% </p>
  %% =====================================================================================
  %% @spec duplicated_code_in_buffer(FileName::filename(),MinToks::integer(),MinClones::integer()) -> term()
  %% 
        
  -spec(duplicated_code_in_buffer/3::(filename(), string(), string()) ->{ok, string()}).     
  duplicated_code_in_buffer(FileName, MinToks, MinClones) -> 
      refac_duplicated_code:duplicated_code([FileName], MinToks, MinClones).
  
  
  %% =====================================================================================
  %% @doc The duplicated code detector that works with multiple Erlang modules.
  %% <p> This function reports duplicated code fragments found in the directories specified by SearchPaths.
  %% The user will be prompted for two parameters: the minimum number of 
  %% tokens that a cloned code fragment should have, and the minimum number of times a code fragment is duplicated.
  %% </p>
  %% <p> The current version of the duplicated code detector can report clones that are syntactically 
  %% identical after consistent renaming of variables, except for variations in literals, layout and comments.
  %% </p>
  %%======================================================================================
  %% @spec duplicated_code_in_dirs(FileNameList::[filename()|dir()], MinToks::integer(), MinClones::integer()) -> term()
  
  -spec(duplicated_code_in_dirs/3::([dir()], string(), string()) ->{ok, string()}).
  duplicated_code_in_dirs(FileDirList, MinToks, MinClones) ->
      refac_duplicated_code:duplicated_code(FileDirList, MinToks, MinClones).
      
  
  %% ==================================================================================================
  %% @doc Search for clones of a user-selected expression/expression sequence in the current file.
  %% 
  %% <p> This functionality allows to search for clones of a selected expression or expression 
  %% sequence.  The found clones are syntactically identical to the user-selected code fragment after consistent renaming of variables, 
  %% except for variations in literals, layout and comments. 
  %% </p>
  %% <p> When the selected code contains multiple, but non-continuous sequence of, expressions, the first
  %% continuous sequence of expressions is taken as the user-selected expression. A continuous sequence of
  %% expressions is a sequence of expressions separated by ','. </p>
  %% ==================================================================================================
  %% @spec expression_search(FileName::filename(),Start::Pos, End::Pos) -> term()
  
  -spec(expression_search/3::(filename(), pos(), pos()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}).
  expression_search(FileName, Start, End) ->
      refac_expr_search:expr_search(FileName, Start, End).
  
  
  
  %% =====================================================================================================
  %%@doc Introduce a new function to represent a user-selected expression or expression sequence.
  %% <p> This refactoring allows the user to introduce a new function to represent a selected expression or expression 
  %% sequence, and replace the selected expression/expression sequence with a call to the newly introduced function.  Those free variables
  %% within the expression/expression sequence become the formal parameters of the function. </p>
  %% =====================================================================================================
  %% @spec fun_extraction(FileName::filename(), Start::Pos, End::Pos, FunName::string()) -> term()
  
  -spec(fun_extraction/4::(filename(), pos(), pos(), string()) ->
  	      {error, string()} | {ok, string()}).
  