anchor.diff:  search_and_transform_3(Rules, File, Fun, Selective) ->
       ?wrangler_io("The current file under refactoring is:\n~p\n", [File]),
       {ok, {AST, _}} = wrangler_ast_server:parse_annotate_file(File, true, [], 8),
  -    AST0 = wrangler_misc:extend_function_clause(AST),
  -    {AST1, Changed}=search_and_transform_4(File, Rules, AST0, Fun, Selective),
  +    Res=[search_and_transform_4(File, Rules, wrangler_misc:extend_function_clause(Form),
  +                                Fun, Selective)
  +         || Form<-wrangler_syntax:form_list_elements(AST)],
  +    {Forms, Changes} = lists:unzip(Res),
  +    Changed = lists:member(true, Changes),
       if Changed andalso Selective/=true ->
  -            AST2= reverse_function_clause(AST1),
  -            [{{File, File}, AST2}];
  +            AST1 = wrangler_syntax:form_list([reverse_function_clause(F)||F<-Forms]),
  +            [{{File, File}, AST1}];
          true ->
               if Changed->
  -                    [{{File, File}, AST1}];
  +                    [{{File, File}, wrangler_syntax:form_list(Forms)}];
                  true ->
                       []
               end
  
positive.code: -type (rule()::{rule, any(), any()}).
  -spec(search_and_transform([rule()], [filename()|dir()]|
                             [{filename(), syntaxTree()}|syntaxTree()],
                             full_td_tp|stop_td_tp) ->
               {ok, [{{filename(),filename()}, syntaxTree()}]}|
               {ok, [{filename(), syntaxTree()}|syntaxTree()]}|
               {ok, syntaxTree()}).
  
negative.code:              lists:member(true, lists:flatten(G))}
      end.
     
  %% pre_order.
  extended_stop_tdTP(Fun, Node, Others) ->
      {Node1, C} =extend_stop_tdTP(Fun, Node, Others),
      if C ->{remove_fake_begin_end(Node1),C};
         true ->{Node1, C}
      end.
  
  extend_stop_tdTP(Fun, Node, Others) ->
      Res= Fun(Node, Others), 
  