anchor.diff:  % TODO: Need type spec for Python/Ruby subscribers (ErlPort Pid and
   % function path)
   -type payload() :: term().
  -% TODO: How to represent external functions?
  --type sender() :: [pid()].
   -type topic() :: atom().
   % TODO: How to represent external functions?
   -type destination() :: [pid()].
   -type subscriber() :: pid().
   -type hub() :: erlport:server_instance().
   -type send_options() :: [route_by_path].
  +-type message() :: #message{}.
   
   -define(IS_TOPIC(T), is_atom(T)).
   
  
positive.code: notify(_Subscriber, _Message, false) ->
      ok.
  
  do_send(Next, Sender, Destination, Payload) ->
      case is_routing_loop(Next, Sender) of
          false ->
  
negative.code:     send(Hub, Payload, Topic, [Hub, self()], []).
  
  %%
  %% @doc Reply to the message sender
  %%
  
  -spec reply(Hub::hub(), Payload::term(), Message::message()) -> ok.
  
  reply(Hub, Payload, Message) ->
      reply(Hub, Payload, Message, []).
  
  %%
  %% @doc Reply to the message sender with options
  %%
  
  -spec reply(Hub::hub(), Payload::term(), Message::message(),
      Options::send_options()) -> ok.
  
  reply(Hub, Payload, #message{sender=Sender}, Options) when is_list(Options) ->
      send(Hub, Payload, Sender, [Hub, self()], Options).
  
  %%
  %% @doc Return all registered topics
  