anchor.diff:              throw(no_abstract_code)
       end.
   
  +compile_options(BeamFile) when is_binary(BeamFile) ->
  +    case beam_lib:chunks(BeamFile, [compile_info]) of
  +        {ok, {_, [{compile_info, Info}]}} ->
  +            proplists:get_value(options, Info);
  +        _ ->
  +            throw(no_compile_options)
  +    end;
   compile_options(Module) ->
       proplists:get_value(options, Module:module_info(compile)).
   
  
positive.code: 
  restore_original(_Mod, false) ->
      ok;
  restore_original(Mod, {File, Data}) ->
      {ok, Mod} = cover:compile(File),
      ok = cover:import(Data),
      file:delete(Data),
      ok.
  
negative.code: get_cover_state(Module, {file, File}) ->
      Data = atom_to_list(Module) ++ ".coverdata",
      ok = cover:export(Data, Module),
      CompileOptions = compile_options(beam_file(Module)),
      {File, Data, CompileOptions}.
  
  exists(Module) ->
      code:which(Module) /= non_existing.
  