anchor.diff:  %% <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>
  -%% Usage: highlight the expression/expression sequence of interest, then selected  <em> Expression Search </em> from 
  -%% the <em> Refactor </em> sub-menu.
  -%% @spec expression_search(FileName::filename(),Start::Pos, End::Pos, TabWidth:: integer()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}
  -
  --spec(expression_search/4::(filename(), pos(), pos(), integer()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}).
  -expression_search(FileName, Start, End, TabWidth) ->
  -    refac_expr_search:expr_search(FileName, Start, End, TabWidth).
  +%% Usage: highlight the expression/expression sequence of interest, then selected  <em> Indentical Expression Search </em> from 
  +%% <em> Refactor </em>.
  +%% @spec identical_expression_search(FileName::filename(),Start::Pos, End::Pos, TabWidth:: integer()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}
  +
  +-spec(identical_expression_search/4::(filename(), pos(), pos(), integer()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}).
  +identical_expression_search(FileName, Start, End, TabWidth) ->
  +    try_refactoring(refac_expr_search, expr_search, [FileName, Start, End, TabWidth]).
   
   
   
   %% ==================================================================================================
   %% @doc Search for expression/expression sequences in the current buffer that are similar to the expression/expression sequence selected by the user.
  -%% 
  +%% <p> This functionality allows searching for expression sequence that are <em>similar</em> to the expression sequence selected.  In this context, 
  +%% two expressions, A and B say, are similar if there exists an anti-unifier, say C,  of A and B, and C satisfies the similarity score specified
  +%% by the user (the calculation calcuated of similarity score is going to be further explored).
  +%% </p>
  +%% Usage: highlight the expression sequence of interest, then selected  <em> Similar Expression Search </em> from  Refactor.
  +%% @spec similar_expression_search(FileName::filename(), Start::pos(), End::pos(), SimiScore::string(), SearchPaths::[dir()], TabWidth::integer())
  +%%    -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}
   -spec(similar_expression_search/6::(filename(), pos(), pos(), string(), [dir()], integer()) -> {ok, [{integer(), integer(), integer(), integer()}]} | {error, string()}).
   similar_expression_search(FileName, Start, End, SimiScore, SearchPaths, TabWidth) ->
  -    refac_sim_expr_search:sim_expr_search(FileName, Start, End, SimiScore, SearchPaths, TabWidth).
  +    try_refactoring(refac_sim_expr_search, sim_expr_search, [FileName, Start, End, SimiScore, SearchPaths, TabWidth]).
   
   %% =====================================================================================================
   %%@doc Introduce a new function to represent an expression or expression sequence.
  
positive.code:     try_refactoring(refac_rename_process, rename_process, [FileName, Line, Col, NewName, SearchPaths, TabWidth]).
  
  
  -spec(rename_process_eclipse/6::(filename(), integer(), integer(), string(), [dir()], integer()) ->
  	       {error, string()} | {undecidables, string()} |  {ok, [{filename(), filename(), string()}]}).
  rename_process_eclipse(FileName, Line, Col, NewName, SearchPaths, TabWidth) ->
      try_refactoring(refac_rename_process, rename_process_eclipse, [FileName, Line, Col, NewName, SearchPaths, TabWidth]).
  
  -spec(rename_process_1_eclipse/5::(string(), string(), string(), [dir()], integer()) -> {ok, [{filename(), filename(), string()}]}).
  rename_process_1_eclipse(FileName, OldProcessName, NewProcessName, SearchPaths, TabWidth) ->
      try_refactoring(refac_rename_process, rename_process_1_eclipse, [FileName, OldProcessName, NewProcessName, SearchPaths, TabWidth]).
  
negative.code: %% of expressions/patterns selected by the user, and replace the selected code with an application of the macro.
  %% Free variables within the selected code become the formal parameters of the macro definition.
  %% </p>
  %% <p>
  %% Usage: Highlight the expression of interest, then selected the <em>Introduce a Macro</em> 
  %% from <em>Refactor</em>, Wrangler will then prompt for the new macro name.
  %% </p> 
  %% @spec new_macro(FileName::filename(),Start::pos(), End::pos(), NewMacroName::string(),SearchPaths::[dir()], TabWidth:: integer()) ->{error, string()} | {ok, string()}
  -spec(new_macro/6::(filename(), pos(), pos(), string(), [dir()], integer()) ->
  	      {error, string()} | {ok, string()}).
  