<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_transition(self, from_state_id, from_outcome, to_state_id, to_outcome, transition_id=None):
 """Adds a transition to the container state Note: Either the toState or the toOutcome needs to be "None" :param from_state_id: The source state of the transition :param from_outcome: The outcome id of the source state to connect the transition to :param to_state_id: The target state of the transition :param to_outcome: The target outcome id of a container state :param transition_id: An optional transition id for the new transition """


        transition_id = self.check_transition_id(transition_id)

        # Set from_state_id to None for start transitions, as from_state_id and from_outcome should both be None for
        # these transitions
        if from_state_id == self.state_id and from_outcome is None:
            from_state_id = None

        new_transition = Transition(from_state_id, from_outcome, to_state_id, to_outcome, transition_id, self)
        self.transitions[transition_id] = new_transition

        # notify all states waiting for transition to be connected
        self._transitions_cv.acquire()
        self._transitions_cv.notify_all()
        self._transitions_cv.release()
        # self.create_transition(from_state_id, from_outcome, to_state_id, to_outcome, transition_id)
        return transition_id