/**
  * buildValidatorMessages
  *
  * @param                $fieldName
  * @param InputInterface $input
  *
  * @return void
  */
 protected function buildValidatorMessages($fieldName, InputInterface $input)
 {
     $validatorChain = $input->getValidatorChain();
     $validators = $validatorChain->getValidators();
     // We get the input messages because input does validations outside of the validators
     $allMessages = $input->getMessages();
     foreach ($validators as $fkey => $validatorData) {
         /** @var \Zend\Validator\AbstractValidator $validator */
         $validator = $validatorData['instance'];
         $params = [];
         if ($validator instanceof MessageParamInterface) {
             $params = $validator->getMessageParams();
         }
         try {
             $messagesParams = $validator->getOption('messageParams');
             $params = array_merge($params, $messagesParams);
         } catch (\Exception $exception) {
             // Do nothing
         }
         $inputMessages = $validator->getMessages();
         // Remove the messages from $allMessages as we get them from the validators
         $allMessages = array_diff($allMessages, $inputMessages);
         $this->buildApiMessages($fieldName, $inputMessages, $params);
     }
     $params = [];
     if ($input instanceof MessageParamInterface) {
         $params = $input->getMessageParams();
     }
     // get any remaining messages that did not come from validators
     $this->buildApiMessages($fieldName, $allMessages, $params);
 }