def push(self, act, force=False):
        """
        Pushes a dialogue act into the agenda.

        :param act: dialogue act to be appended
        :param force: does not remove act if it already is in the agenda,
                      potentially resulting in duplicates
        :return: Nothing
        """

        if act is not None and isinstance(act, DialogueAct):
            # This is unnecessary only if the act is already on the top of
            # the agenda.
            if act in self.agenda and not force:
                self.remove(act)

            self.agenda.append(act)
        else:
            # TODO: RAISE ERROR
            print("Error! Cannot add item %s in the agenda." % act)

        Pushes a dialogue act into the agenda.

        :param act: dialogue act to be appended
        :param force: does not remove act if it already is in the agenda,
                      potentially resulting in duplicates
        :return: Nothing
        
plato/agent/component/user_simulator/agenda_based_user_simulator/agenda.py