anchor.diff:                    digraph:add_vertex(Graph, V, Vertex)
                   end, lists:usort(ExpAllStates)),
     lists:foreach(fun(#edge{vertex1 = From, vertex2 = To, edge_data = Data}) ->
  -                  digraph:add_edge(Graph, get_vertex(Graph, From), get_vertex(Graph,To), Data);
  -(_) -> ok
  +                  digraph:add_edge(Graph, get_vertex(Graph, From),
  +                                   get_vertex(Graph,To), Data);
  +                   (_) -> ok
                   end, remove_dups(Edges ++ NewAllStateEdges)),
  -  {parsed, gen_fsm, Graph}.
  +  Graph.
   
   parse_gen_event(_TokenList) ->
     {error, not_supported}.
  +
  +parse_function_add_states(Clauses, FnName, Options, Type,
  +                          {OldNodes, OldEdges, OldAllStates}) ->
  +  case parse_function(Clauses, FnName, Options, Type) of
  +    {error, _Reason} ->
  +      {OldNodes, OldEdges, OldAllStates};
  +    NewEdges ->
  +      {OldNodes, OldEdges, OldAllStates ++ NewEdges}
  +  end.
  +
  +parse_function_add_edges(Clauses, FnName, Options, Type,
  +                          {OldNodes, OldEdges, OldAllStates}) ->
  +  case parse_function(Clauses, FnName, Options, Type) of
  +    {error, _Reason} ->
  +      {OldNodes, OldEdges, OldAllStates};
  +    NewEdges ->
  +      {OldNodes, OldEdges ++ NewEdges, OldAllStates}
  +  end.
  +parse_function_add_node_and_edges(Clauses, FnName, Options, Type,
  +                                  {OldNodes, OldEdges, OldAllStates}) ->
  +  case parse_function(Clauses, FnName, Options, Type) of
  +    {error, _Reason} ->
  +      {OldNodes, OldEdges, OldAllStates};
  +    NewEdges ->
  +      {[FnName|OldNodes], OldEdges ++ NewEdges, OldAllStates}
  +  end.
   
   parse_function(Clauses, FnName, Options, Type) ->
     Edges = lists:foldl(fun(Clause, AccIn) ->
  
positive.code:       eval_return(Rest, gen_fsm, [{ok, terminate, async}|Acc]);
      _Other ->
        eval_return(Rest, gen_fsm, Acc)
    end;
  eval_return([], _, []) ->
    {error, badreturn};
  
negative.code:               code = PrettyBody,
                attributes = [RetType|Options]}
            }
          end,
    map_parse_func(Fun, Body, gen_fsm);
  parse_function_clause({clause, _Line, [Event | Args], Guards, Body},
                        FnName, Options, gen_fsm) ->
    Fun = fun({ok, NextState, _}) ->
            PrettyGuards = lists:map(fun(G) -> erl_pp:guard(G) end, Guards),
            PrettyBody = erl_pp:exprs(Body),
            PrettyEvent = erl_pp:expr(Event),
  