anchor.diff:                                                      PredicateFunction,
                                                       MonitorInstance),
     check_transition_list(FilteredTransitions);
  +next_node(recv, Message, MonitorNode, MonitorInstance) ->
  +  transition_next_node(Message,
  +                       MonitorNode,
  +                       can_receive_at(Message, MonitorNode, MonitorInstance),
  +                       MonitorInstance);
  +next_node(send, Message, MonitorNode, MonitorInstance) ->
  +  transition_next_node(Message,
  +                       MonitorNode,
  +                       can_send_at(Message, MonitorNode, MonitorInstance),
  +                       MonitorInstance);
   next_node(_IT, _Msg, _MN, _MI) ->
     {error, bad_node}.
   
  
positive.code:   %Elem = Value = term()
    {NodeType, PredicateFunction} =
      case InteractionType of
        send -> {send_node, fun monitor_gen:can_send_at/3};
        recv -> {receive_node, fun monitor_gen:can_receive_at/3}
      end,
    FilteredTransitions = filter_outgoing_transitions(InteractionType,
                                                      NodeType,
  
negative.code: 
  % Gets the next node, given an interaction type, message, monitor node, and monitor instance.
  % This will either be {ok, Node} or {error , Error}
  next_node(InteractionType, Message, MonitorNode = {choice_node, Id, _Info}, MonitorInstance) ->
    % - In case of sends, filter send nodes; converse for receive nodes
    % - Filter valid ones
  