public function interact(array $configurators, $skipOptional = true, array $variables = [], array $defaults = []) : QuestionsSet
{
$questionCommunicator = function ($question) {
return $this->io->askQuestion($question);
};
$answersSet = call_user_func($this->answerSetFactory, $variables, $defaults);
$questions = new QuestionsSet($questionCommunicator, $answersSet, $skipOptional);
foreach ($configurators as $configurator) {
$configurator->interact($questions);
}
return $questions;
}