anchor.diff:  
   -opaque callgraph() :: #callgraph{}.
   
  --type active_digraph() :: {'d', digraph:graph()} | {'e', ets:tid(), ets:tid()}.
  +-type active_digraph() :: {'d', digraph:graph()}
  +                        | {'e',
  +                           Out :: ets:tid(),
  +                           In :: ets:tid(),
  +                           Map :: ets:tid()}.
   
   %%----------------------------------------------------------------------
   
  
positive.code: 
  active_digraph_delete({'d', DG}) ->
    digraph:delete(DG);
  active_digraph_delete({'e', Out, In}) ->
    ets:delete(Out),
    ets:delete(In).
  
  digraph_edges(DG) ->
    digraph:edges(DG).
  
negative.code: 
  -spec get_depends_on(scc() | module(), callgraph()) -> [scc()].
  
  get_depends_on(SCC, #callgraph{active_digraph = {'e', Out, _In, Maps}}) ->
    lookup_scc(SCC, Out, Maps);
  get_depends_on(SCC, #callgraph{active_digraph = {'d', DG}}) ->
    digraph:out_neighbours(DG, SCC).
  
  -spec get_required_by(scc() | module(), callgraph()) -> [scc()].
  
  get_required_by(SCC, #callgraph{active_digraph = {'e', _Out, In, Maps}}) ->
    lookup_scc(SCC, In, Maps);
  get_required_by(SCC, #callgraph{active_digraph = {'d', DG}}) ->
    digraph:in_neighbours(DG, SCC).
  
  lookup_scc(SCC, Table, Maps) ->
    case ets_lookup_dict({'scc', SCC}, Maps) of
      {ok, SCCInt} ->
        case ets_lookup_dict(SCCInt, Table) of
          {ok, Ints} ->
            [ets:lookup_element(Maps, Int, 2) || Int <- Ints];
          error ->
            []
        end;
      error -> []
    end.
  
  %%----------------------------------------------------------------------
  %% Handling of modules & SCCs
  