anchor.diff:  
   generate_subgraphs(#drai{dnodes = DNodes} = Drai) ->
       {_ClusterD, BaseClusterNodesSet, DNodes2} = dict:fold(fun get_base_cluster_nodes/3, {dict:new(), sets:new(), DNodes}, DNodes),
  -    {NewDrai,_,_} = sets:fold(fun depth_search_inc_in_clus/2, {Drai#drai{dnodes = DNodes2}, [], no}, BaseClusterNodesSet),
  +    {NewDrai,_,_} = lists:foldl(fun depth_search_inc_in_clus/2, {Drai#drai{dnodes = DNodes2}, [], no},
  +				lists:reverse(sort_topologically(Drai, sets:to_list(BaseClusterNodesSet)))),
       sets:fold(fun find_class/2, NewDrai, BaseClusterNodesSet).
   
   -spec find_class(#diagram_node{}, #drai{}) -> #drai{}.
  
positive.code: expand_nodes_down_wt_arcfilter(Filter, NodeSet, #drai{arcsf = FromTo} = Drai) ->
  	sets:fold(mk_filter_plus_to(Drai, Filter), sets:new(),
  		utils:expand_set_through_idx(NodeSet, FromTo)).
  
  expand_nodes_down(NodeSet, #drai{arcsf = FromTo} = Drai) ->
      utils:sets_map(create_arc_solver(fun get_arc_to/1, Drai),
  
negative.code: 		false -> Set
  	end.
  
  filter_plus_from(Filter, Arc, Set) ->
  	case Filter(Arc) of
  		true -> sets:add_element(get_arc_from(Arc), Set);
  		false -> Set
  	end.
  
  is_data_dep(#diagram_arc{content = this}) -> true;
  is_data_dep(#diagram_arc{content = {param, _}}) -> true;
  is_data_dep(_) -> false.
  
  is_control_dep(Arc) -> not is_data_dep(Arc).
  
  get_node_by_id(NodeId, #drai{dnodes = DNodes}) -> dict:find(NodeId, DNodes).
  get_nodes_by_ids([], _Drai) -> [];
  