anchor.diff:          false ->
               % make a graph of the communities (communities are
               % nodes, edges weighted accordingly), and recurse.
  +            validate_graph(PartitionedGD),
               CommunityGD = community_graph(PartitionedGD),
               partition(CommunityGD,
                         [graph(PartitionedGD) | L])
  
positive.code: %% In the #louvain_graphd{}, the Communities are updated
  %% to reflect the paritioning.
  one_level(GD0 = #louvain_graphd{}, Weights0 = #louvain_weights{}, Modularity) ->
  %   {ok, FD} = file:open("/tmp/part", [append]),
  %   file:write(FD, io_lib:format("starting communities: ~p~n", [lists:sort(dict:to_list(GD0#louvain_graphd.communitiesd))])),
  %   file:write(FD, io_lib:format("edges: ~p~n", [lists:sort(dict:to_list(GD0#louvain_graphd.edgesd))])),
  
negative.code:         {ok, Value} -> Value
      end.
  
  % add Key to Dict with [] value if Key is not in Dict.  Otherwise
  % do nothing.
  dict_init(Key, Dict) ->
      dict:update(Key, fun(Value) -> Value end, [], Dict).
  
  dict_append(Key, Value, Dict) ->
      dict:update(Key, fun(V0) -> [Value | V0] end, [Value], Dict).
  
  