Ask the question, then ask any sub-questions.

            This returns a dict with the {value: answer} pairs for the current
            question plus all descendant questions.

def ask(self, answers=None):
        """ Ask the question, then ask any sub-questions.

            This returns a dict with the {value: answer} pairs for the current
            question plus all descendant questions.
        """
        if answers is None:
            answers = {}
        _answers = {}
        if self.multiple:
            print((bold('Multiple answers are supported for this question.  ' +
                        'Please enter a "."  character to finish.')))
            _answers[self.value] = []
            answer = self._ask(answers)
            while answer is not None:
                _answers[self.value].append(answer)
                answer = self._ask(answers)
        else:
            _answers[self.value] = self._ask(answers)
        if isinstance(self.validator, list):
            for v in self.validator:
                _answers = dict(_answers, **v.hints())
        else:
            _answers = dict(_answers, **self.validator.hints())
        for q in self._questions:
            answers = dict(answers, **_answers)
            _answers = dict(_answers, **q.ask(answers))
        return _answers