anchor.diff:  
   %%
   %% Extract an element from a tuple, or undefined if N > tuple size
  +%%
   safe_element(N, Tuple) ->
       case catch(element(N, Tuple)) of
           {'EXIT', {badarg, _}} ->
  
positive.code:         Value ->
              Value
      end.
  
  %%
  %% Extract the line number for a given function def
  %%
  abstract_code_function_line(Code, Name, Args) ->
      [{function, Line, Name, _, _}] = [E || E <- Code,
                                             safe_element(1, E) == function,
                                             safe_element(3, E) == Name,
                                             safe_element(4, E) == Args],
      Line.
  
  %%
  %% Extract the original source filename from the abstract code
  %%
  abstract_code_source_file(Code) ->
      [{attribute, 1, file, {Name, _}} | _] = Code,
      Name.
  
  
  %%
  
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}.
  