anchor.diff:      gen_server:call(?MODULE, {add_vertices, Vs}, infinity).
   
   %% @doc Check if linking the given vertices will form a loop.
  --spec will_form_cycle(list(id()), id()) -> boolean().
  +-spec will_form_cycle(list(lasp_vertex()), lasp_vertex()) -> boolean().
   will_form_cycle(Src, Dst) ->
       gen_server:call(?MODULE, {will_form_cycle, Src, Dst}, infinity).
   
  
positive.code: %%      as adding the same vertex multiple times removes any
  %%      metadata (labels).
  %%
  -spec add_if_pid(digraph:graph(), pid()) -> ok.
  add_if_pid(Dag, Pid) when is_pid(Pid) ->
     case digraph:vertex(Dag, Pid) of
        false -> digraph:add_vertex(Dag, Pid);
  
negative.code:     false.
  
  %% @doc Delete all edges between Src and Dst with the given pid..
  -spec delete_with_pid(digraph:graph(), lasp_vertex(), lasp_vertex(), term()) -> digraph:graph().
  delete_with_pid(Graph, Src, Dst, Pid) ->
      lists:foreach(fun
          ({E, _, _, #edge_label{pid=TargetPid}}) when TargetPid =:= Pid ->
  