anchor.diff:                  [{Mod, F, A} || {F, A} <- Ignore ++ lists:flatten(Callbacks)]
           end,
       AttrIgnore = lists:flatten(lists:map(F, lists:usort([M || {M, _, _} <- UnusedExports]))),
  -    [X || X <- UnusedExports, not(lists:member(X, AttrIgnore))].
  +    [X || X <- UnusedExports, not lists:member(X, AttrIgnore)].
   
   
   kf(Key, List) ->
  
positive.code: 
  %%
  %% Extract an element from a tuple, or undefined if N > tuple size
  safe_element(N, Tuple) ->
      case catch(element(N, Tuple)) of
          {'EXIT', {badarg, _}} ->
  
negative.code:     {M, Bin, _} = code:get_object_code(M),
      {ok, {M, [{abstract_code, AbstractCode}]}} = beam_lib:chunks(Bin, [abstract_code]),
      {raw_abstract_v1, Code} = AbstractCode,
      %% Extract the original source filename from the abstract code
      [{attribute, 1, file, {Source, _}} | _] = Code,
      %% Extract the line number for a given function def
      [{function, Line, F, _, _}] = [E || E <- Code,
                                          safe_element(1, E) == function,
                                          safe_element(3, E) == F,
                                          safe_element(4, E) == A],
      {Source, Line}.
  