anchor.diff:  file(File, Opts) ->
       case parse_file(File, Opts) of
           {ok, Defs} ->
  +            possibly_probe_defs(Defs, Opts),
               Ext = filename:extension(File),
               Mod = list_to_atom(filename:basename(File, Ext)),
               Erl = change_ext(File, ".erl"),
               Hrl = change_ext(File, ".hrl"),
  -            file:write_file(Erl, format_erl(Mod, Defs, Opts)),
  -            file:write_file(Hrl, format_hrl(Mod, Defs, Opts));
  +            file_write_file(Erl, format_erl(Mod, Defs, Opts), Opts),
  +            file_write_file(Hrl, format_hrl(Mod, Defs, Opts), Opts);
           {error, _Reason} = Error ->
               Error
       end.
  
positive.code: 
  locate_import(Import, Opts) ->
      ImportPaths = [Path || {i, Path} <- Opts],
      locate_import_aux(ImportPaths, Import).
  
  locate_import_aux([Path | Rest], Import) ->
      File = filename:join(Path, Import),
      case file:read_file_info(File) of
          {ok, #file_info{access = A}} when A == read; A == read_write ->
              {ok, File};
          {ok, #file_info{}} ->
              locate_import_aux(Rest, Import);
          {error, _Reason} ->
              locate_import_aux(Rest, Import)
      end;
  locate_import_aux([], Import) ->
      {error, {import_not_found, Import}}.
  
  format_erl(Mod, Defs, _Opts) ->
  
negative.code: parse_file_and_imports(FName, AlreadyImported, Opts) ->
      case locate_import(FName, Opts) of
          {ok, FName2} ->
              {ok,B} = file_read_file(FName2, Opts),
              %% Add to AlreadyImported to prevent trying to import it again: in
              %% case we get an error we don't want to try to reprocess it later
              %% (in case it is multiply imported) and get the error again.
  