protected function add_interaction(ImsQtiWriter $body, $question)
 {
     $question_count = 0;
     foreach ($question->options->subquestions as $subquestion) {
         if (!empty($subquestion->questiontext)) {
             $question_count++;
         }
     }
     $result = $body->add_matchInteraction(ImsQtiWriter::RESPONSE, $question_count, $question->options->shuffleanswers);
     $questions = $result->add_simpleMatchSet();
     $answers = $result->add_simpleMatchSet();
     $question_score = $question->defaultgrade / $question_count;
     $count = 0;
     foreach ($question->options->subquestions as $subquestion) {
         ++$count;
         $question_id = 'Q_' . $count;
         $answer_id = 'A_' . $count;
         if ($has_question = !empty($subquestion->questiontext)) {
             $questions->add_simpleAssociableChoice($question_id, false, array(), 1)->add_flow($subquestion->questiontext);
         }
         if ($has_answer = !empty($subquestion->answertext)) {
             $answers->add_simpleAssociableChoice($answer_id, false, array(), 1)->add_flow($subquestion->answertext);
         }
         if ($has_question && $has_answer) {
             $key = "{$question_id} {$answer_id}";
             $this->mapping->add_mapEntry($key, $question_score);
             $this->correct_response->add_value($key);
         }
     }
     return $result;
 }