docs: 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))