Given a piece of data, check each node_type that the last_node_type can lead to and act using
    the first whose checker returns true.

def _handle_node(self, data):
    """Given a piece of data, check each node_type that the last_node_type can lead to and act using
    the first whose checker returns true.
    """
    next_options = self.graph[self.last_node_type]
    for node_type in next_options:
      checker, handler, *_ = node_type
      if checker(data):
        self.last_node_type = node_type
        self.handle(handler(data), node_type, data)
        return
    raise Exception("Unable to handle data: {}".format(data))