public function buildValidation(ResponseProcessingTemplate $responseProcessingTemplate)
 {
     try {
         switch ($responseProcessingTemplate->getTemplate()) {
             case ResponseProcessingTemplate::MATCH_CORRECT:
                 return $this->getMatchCorrectTemplateValidation();
             case ResponseProcessingTemplate::MAP_RESPONSE:
             case ResponseProcessingTemplate::CC2_MAP_RESPONSE:
                 return $this->getMapResponseTemplateValidation();
             case ResponseProcessingTemplate::NONE:
                 if (!empty($this->responseDeclaration)) {
                     // If the response processing template is not set, simply check whether `mapping` or `correctResponse` exists and
                     // simply use `em
                     if (!empty($this->responseDeclaration->getMapping()) && $this->responseDeclaration->getMapping()->getMapEntries()->count() > 0) {
                         LogService::log('Response processing is not set, the `validation` object is assumed to be mapped based on `mapping` map entries elements');
                         return $this->getMapResponseTemplateValidation();
                     }
                     if (!empty($this->responseDeclaration->getCorrectResponse()) && $this->responseDeclaration->getCorrectResponse()->getValues()->count() > 0) {
                         LogService::log('Response processing is not set, the `validation` object is assumed to be mapped based on `correctResponse` values elements');
                         return $this->getMatchCorrectTemplateValidation();
                     }
                 }
                 return $this->getNoTemplateResponsesValidation();
             default:
                 LogService::log('Unrecognised response processing template. Validation is not available');
         }
     } catch (MappingException $e) {
         LogService::log('Validation is not available. Critical error: ' . $e->getMessage());
     }
     return null;
 }