anchor.diff:  
   -include("pushy.hrl").
   -include_lib("pushy_common/include/pushy_metrics.hrl").
  +-include_lib("pushy_common/include/pushy_messaging.hrl").
   
   %% TODO : figure out where this really should come from
   -opaque dictionary() :: any().
  
positive.code:     State.
  
  %% FIX: Take advantage of multiple function heads to make code easier to read
  process_message(State, Address, _Header, Body) ->
      case catch jiffy:decode(Body) of
          {Data} ->
              {State2, NodeRef} = get_node_ref(State, Address, Data),
              JobId = ej:get({<<"job_id">>}, Data),
              Type = ej:get({<<"type">>}, Data),
              send_node_event(JobId, NodeRef, Type),
              State2;
          {'EXIT', Error} ->
              lager:error("Status message JSON parsing failed: body=~s, error=~s", [Body,Error]),
              State
      end.
  
  send_node_event(JobId, NodeRef, <<"heartbeat">>) ->
      lager:debug("Received heartbeat for node ~p with job id ~p", [JobId, NodeRef]),
  
negative.code:     lager:debug("Receiving message with address ~w", [Address]),
  
      lager:debug("Received message~n\tA ~p~n\tH ~s~n\tB ~s", [Address, Header, Body]),
  
      KeyFetch = fun(M, EJson) -> get_key_for_method(M, State, EJson) end,
  
      State1 = try ?TIME_IT(pushy_messaging, parse_message, (Header, Body, KeyFetch)) of
                   {ok, #pushy_message{} = Msg} ->
                       process_message(State, Msg);
                   {error, #pushy_message{validated=bad_sig}} ->
                       lager:error("Command message failed verification: header=~s", [Header]),
                       State
               catch
                   error:Error ->
                       Stack = erlang:get_stacktrace(),
                       ?debugVal(Error), ?debugVal(Stack),
                       lager:error("Command message parser failed horribly: header=~w~nstack~s", [Error, Stack]),
                       State;
               end,
      State1.
  
  