anchor.diff:  	    {ok, NewForms};
   	{error, Error} -> {error, Error}
       end.
  +
  +%% XXX: Implementation dependent.
  +strip_attributes([], Acc) -> lists:reverse(Acc);
  +strip_attributes([{attribute, _Line, Name, _Misc} = Head|Rest], Acc) ->
  +    case lists:member(Name, ?ATTR_STRIP) of
  +	true -> strip_attributes(Rest, Acc);
  +	false -> strip_attributes(Rest, [Head|Acc])
  +    end;
  +strip_attributes([Head|Rest], Acc) ->
  +    strip_attributes(Rest, [Head|Acc]).
  +
   
   %% Instrument a "top-level" element.
   %% Of the "top-level" elements, i.e. functions, specs, etc., only functions are
  
positive.code: %%%----------------------------------------------------------------------
  %%% Definitions
  %%%----------------------------------------------------------------------
  
  %% Instrumented auto-imported functions of 'erlang' module.
  -define(INSTR_ERLANG_NO_MOD,
  
negative.code:     %%       defined include path (like the erlc -I flag).
      case epp:parse_file(File, [filename:dirname(File)], []) of
  	{ok, OldForms} ->
  	    %% Remove `type` and `spec` attributes to avoid errors
  	    %% due to record expansion below.
  	    StrippedForms = strip_attributes(OldForms, []),
  	    ExpRecForms = erl_expand_records:module(StrippedForms, []),
  	    Tree = erl_recomment:recomment_forms(ExpRecForms, []),
  	    MapFun = fun(T) -> instrument_toplevel(T) end,
  	    Transformed = erl_syntax_lib:map_subtrees(MapFun, Tree),
  