public function convert(BaseQuestionType $questionType, $interactionIdentifier, $interactionLabel)
 {
     //TODO: Need validation a question shall have at least 1 {{response}} and 1 item in `possible_responses`
     /** @var imageclozeassociation $question */
     $question = $questionType;
     // Map `possible_responses` to `gapImg`(s)
     $possibleResponses = $question->get_possible_responses();
     $matchMax = !is_null($question->get_duplicate_responses()) ? count($possibleResponses) : 1;
     $gapImageCollection = $this->buildGapImgCollection($possibleResponses, $matchMax);
     // Build the main background image `object`
     $imageObject = $this->buildMainImageObject($question->get_image());
     // Build associable hotspots based on `response_positions`
     $associableHotspotCollection = $this->buildAssociableHotspotCollection($question->get_response_positions(), $imageObject->getWidth(), $imageObject->getHeight());
     // Build dah` interaction
     $interaction = new GraphicGapMatchInteraction($interactionIdentifier, $imageObject, $gapImageCollection, $associableHotspotCollection);
     $interaction->setLabel($interactionLabel);
     $interaction->setPrompt($this->convertStimulusForPrompt($question->get_stimulus()));
     $validationBuilder = new ImageclozeassociationValidationBuilder($possibleResponses);
     list($responseDeclaration, $responseProcessing) = $validationBuilder->buildValidation($interaction->getResponseIdentifier(), $question->get_validation());
     return [$interaction, $responseDeclaration, $responseProcessing];
 }