anchor.diff:  
   is_sub_list(L1, L2) ->
       ordsets:is_subset(ordsets:from_list(L1), ordsets:from_list(L2)).
  -
  -remove_sub_lists(ListOfLists) ->
  -    ListOfLists1 = lists:sort(fun(L1, L2)-> length(L1)>= length(L2) end, ListOfLists),
  -    remove_sub_lists(ListOfLists1,[]).
  -
  -remove_sub_lists([], Acc) ->
  -    lists:reverse(Acc);
  -remove_sub_lists([L|T], Acc) ->
  -    case lists:any(fun(A)->
  -			   is_sub_list(L, A) 
  -		   end, Acc) of 
  -	true ->
  -	    remove_sub_lists(T, Acc);
  -	false ->
  -	    remove_sub_lists(T, [L|Acc])
  -    end.
  -		  
  -
  -
  -is_prop_sub_list(L1, L2) ->
  -    S1 = ordsets:from_list(L1),
  -    S2 = ordsets:from_list(L2),
  -    (ordsets:size(S1) < ordsets:size(S2))
  -	andalso ordsets:is_subset(S1, S2).
   
   add_edges([], MG) ->
       MG;
  
positive.code: %% CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 
  %% SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 
  %% BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
  %% WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
  %% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 
  %% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  %% =====================================================================
  
negative.code: cyclic_dependent_modules(OutFile, SearchPaths, WithLabel) ->
      ?wrangler_io("\nCMD: ~p:cyclic_dependent_modules(~p, ~p, ~p).\n",
  		 [?MODULE, OutFile, SearchPaths, WithLabel]),
      Files = refac_util:expand_files(SearchPaths, ".erl"),
      ModCallerCallees = refac_module_graph:module_graph_with_funs(SearchPaths),
      MG = digraph:new(),
      refac_module_graph:add_edges(ModCallerCallees,[],MG),
      SCCs = digraph_utils:cyclic_strong_components(MG),
      Cycles = [digraph:get_short_cycle(MG, V) || SCC<-SCCs, V <-SCC],
      Cycles1 = remove_duplicated_cycles(Cycles),
      CycleWeakestLinkPairs= [{C, break_a_cycle(C, ModCallerCallees, MG, Files)}|| C<-Cycles1],
      cycles_to_dot(MG, OutFile,CycleWeakestLinkPairs),
      digraph:delete(MG).
  
  
  remove_duplicated_cycles(Cs) ->
      remove_duplicated_cycles(Cs, []).
  
  remove_duplicated_cycles([], Acc) ->
      Acc;
  remove_duplicated_cycles([C|Cs], Acc) ->
      case lists:any(fun(C1) ->
  			   lists:usort(C)==lists:usort(C1) 
  		   end, Acc) of 
  	true ->
  	    remove_duplicated_cycles(Cs, Acc);
  	false ->
  	    remove_duplicated_cycles(Cs, [C|Acc])
      end.
  	
  
  cycles_to_dot(MG, OutFile, CycleWeakestLinkPairs)->
      CycleEdges=[get_cycle_edges(MG, C, WeakestLink)||
  		   {C, WeakestLink}<-CycleWeakestLinkPairs],
      NewEdgeList=get_renamed_edge_list(CycleEdges),
      edge_list_to_dot(lists:append(NewEdgeList), OutFile, "ModuleGraph", true).
     
      
  get_cycle_edges(MG, C, WeakestLink) ->
      get_cycle_edges(MG, C, WeakestLink, []).
  
  get_cycle_edges(MG, T, {WeakestLink, NodeToColor}, Edges)  when length(T)=<1->
      Edges1 =lists:reverse(Edges),
      [{X, Y, Label, {X,Y}==WeakestLink, case X==NodeToColor of
  					   true -> 1;
  					   false -> 0
  				       end}|| E<-digraph:edges(MG),
  				       {_, X, Y, Label} <- [digraph:edge(MG, E)],
  				       lists:member({X, Y}, Edges1)];
  get_cycle_edges(MG,[V1, V2|T], WeakestLink,  Edges) ->
  