anchor.diff:  %% @doc Reset all the annotations in the subtree to the default (empty) annotation.
   
   %%-spec(reset_attrs(Node::syntaxTree()) -> syntaxTree()).
  +reset_attrs(Node) when is_list(Node) ->
  +    [reset_attrs(N)||N<-Node];
   reset_attrs(Node) ->
  -    ast_traverse_api:full_buTP(fun (T, _Others) -> 
  -				       T1=refac_syntax:set_ann(T, []),
  -				       refac_syntax:remove_comments(T1)
  -			       end, Node, {}).
  +    ast_traverse_api:full_buTP(
  +      fun (T, _Others) -> 
  +              T1=refac_syntax:set_ann(
  +                   refac_syntax:set_pos(T, {0,0}), []),
  +              refac_syntax:remove_comments(T1)
  +      end, Node, {}).
  +
   
   %% =====================================================================
   %% @doc Return the environment variables of an AST node.
  
positive.code: 	 make_new_name/2,collect_var_names/1,collect_used_macros/1,
  	 collect_used_records/1, ghead/2, glast/2, to_upper/1, to_lower/1, 
  	 is_var_name/1,is_fun_name/1, remove_duplicates/1,
  	 format_search_paths/1,default_incls/0, get_toks/1,reset_attrs/1,
  	 get_env_vars/1,get_var_exports/1,get_bound_vars/1,get_free_vars/1,
  	 is_expr/1,is_expr_or_match/1, is_pattern/1, is_exported/2, inscope_funs/1,update_ann/2,
  	 delete_from_ann/2, callback_funs/1, is_callback_fun/3, rewrite/2, rewrite_with_wrapper/2,
  
negative.code:     end.
     
  
  get_start_end_loc_with_comment(Node) when Node==[] ->
      {{0,0},{0,0}};
  get_start_end_loc_with_comment(Node) when is_list(Node) ->
      {Start, _} = get_start_end_loc_with_comment(hd(Node)),
      {_, End} = get_start_end_loc_with_comment(lists:last(Node)),
      {Start, End};
  get_start_end_loc_with_comment(Node) ->
      {Start={_StartLn, StartCol}, End} = refac_prettypr:get_start_end_loc(Node),
      PreCs = refac_syntax:get_precomments(Node),
      PostCs = refac_syntax:get_postcomments(Node),
      Start1 = case PreCs of
                   [] -> 
                       Start;
                   _ ->
                       {StartLn1, StartCol1}=refac_syntax:get_pos(hd(PreCs)),
                       {StartLn1, erlang:max(StartCol, StartCol1)}
               end,
      End1 = case PostCs of
                 [] ->
                     End;
                 _ ->
                     LastC = lists:last(PostCs),
                     LastCText = refac_syntax:comment_text(LastC),
                     {L, C}=refac_syntax:get_pos(LastC),
                     {L+length(LastCText)-1, C+length(lists:last(LastCText))-1}
             end,
      {Start1, End1}.
  
  
  reset_ann_and_pos(Node) when is_list(Node) ->
      [reset_ann_and_pos(N)||N<-Node];
  reset_ann_and_pos(Node) ->
      ast_traverse_api:full_buTP(
        fun (T, _Others) -> 
                refac_syntax:set_ann(
                  refac_syntax:set_pos(T, {0,0}), [])
        end, Node, {}).
  
  reset_ann(Node) when is_list(Node) ->
      [reset_ann(N)||N<-Node];
  reset_ann(Node) ->
      ast_traverse_api:full_buTP(
        fun (T, _Others) -> 
                refac_syntax:set_ann(T, [])
        end, Node, {}).
  
  
  %%-spec(concat_toks(Toks::[token()]) ->string()).
  concat_toks(Toks) ->
      concat_toks(Toks, "").
  