'The user interface calls this method until it returns None.
:return: The next question that has to be asked to the user.'

def next(self):

    if (self._firstQuestion == True):
        self._firstQuestion = False
        self._currentQuestion = self._question_lst[0]
        return self._question_lst[0]
    self._currentQuestion.set_previously_answered_values(self._user_options)
    self._already_asked.append(self._currentQuestion)
    if (self._nextQuestionId is None):
        return None
    possibleQuestions = [q for q in self._question_lst if (q.get_question_id() == self._nextQuestionId)]
    if (len(possibleQuestions) != 1):
        raise BaseFrameworkException(('We    have    more    than    one    next    question.    Please    verify    your    wizard    definition.                                                                                                        Possible    questions    are:    ' + str(possibleQuestions)))
    else:
        self._currentQuestion = possibleQuestions[0]
        return possibleQuestions[0]
