anchor.diff:  %%%===================================================================
   %%% Internal functions
   %%%===================================================================
  +get_message_passing_counters(Node, Proplist, Vizceral) ->
  +    lists:foldl(
  +      fun({send, Send}, V) ->
  +              %% Examples of send trace:
  +              %% {{global_name_server,<13104.13.0>},0,1}
  +              %% {#Port<13104.431>,<13104.28.0>},0,72}
  +              %% {{<13104.12.0>,{alias,'erlangpl@127.0.0.1'}},2,0}
  +              update_message_passing_graph(Node, Send, V);
  +         (_, V) ->
  +              V
  +      end,
  +      Vizceral,
  +      Proplist).
  +
  +update_message_passing_graph(Node, Send, Vizceral) ->
  +    %% Below is a workaround for how Vizceral requires the INTERNET
  +    %% node to appear in its graph
  +    {{RootVertex, _}, _, _} = hd(Send),
  +    Viz1 = push_focused(<<"INTERNET">>, Node, Vizceral),
  +    Viz2 = push_focused(RootVertex, Node, Viz1),
  +    Viz3 = push_focused_connection(
  +                  <<"INTERNET">>, RootVertex, Node, {0,0,0}, #{}, Viz2),
  +
  +    %% Update Vizceral graph with verticies representing processes
  +    %% and edges representing message passing
  +    lists:foldl(
  +      fun({{P1, P2}, Count1, Count2}, V)
  +            when not is_tuple(P1), not is_tuple(P2) ->
  +              V1 = push_focused(P1, Node, V),
  +              V2 = push_focused(P2, Node, V1),
  +              V3 = push_focused_connection(P1, P2, Node,
  +                                           {Count1,0,0}, #{}, V2),
  +              push_focused_connection(P2, P1, Node,
  +                                      {Count2,0,0}, #{}, V3);
  +         (_, V) ->
  +              V
  +      end, Viz3, Send).
  +
   get_traffic_counters() ->
       {ok, NodesInfo} = command(fun net_kernel:nodes_info/0),
   
  
positive.code:     [{NodeName, NodeIn, NodeOut} ||
          {NodeName, [{owner,_}, {state,up}, {address, _}, {type,normal},
                      {in,NodeIn}, {out,NodeOut}]} <- NodesInfo].
  
  get_in_out(Node, Counters) ->
      case lists:keyfind(Node, 1, Counters) of
  
negative.code:    }, Additional),
    maps:merge(To, #{connections => [New | Connections]}).
  
  push_region_connection(Source, Target, {N, W, D}, Additional, Vizceral) ->
    %% Will crash on nonexisting
    pull_region(Source, Vizceral),
    pull_region(Target, Vizceral),
    push_connection(Source, Target, {N, W, D}, Additional, Vizceral).
  
  push_focused_connection(Source, Target, RegionName, {N, W, D}, Additional, Vizceral) ->
      {Region, NewV} = pull_region(RegionName, Vizceral),
      NewR = push_connection(Source, Target, {N,W,D}, Additional, Region),
      push_region("", NewR, NewV).
  
  %% ---------------------- Focused ---------------------
  push_focused(Name, Region, Vizceral) ->
      push_focused(Name, Region, #{} ,Vizceral).
  push_focused(Name, RegionName, Additional, Vizceral) ->
      #{nodes := Nodes} = Vizceral,
      {[Region], Rest} = lists:partition(
                           fun(A) ->
                                   maps:get(name, A) == namify(RegionName)
                           end, Nodes),
      NewRegion = push_node(focused, Name, Additional, Region),
      maps:merge(Vizceral, #{nodes => [NewRegion | Rest]}).
  