/**
  * {@inheritdoc}
  */
 public function validate(CompiledTransformMappingInterface $transformMapping, array $input)
 {
     $rules = [];
     $messages = [];
     foreach ($transformMapping->getFields(SetterField::OPERATION) as $field) {
         $parameters = $field->getValidationParameters();
         // add a validator for the data type of this field
         $parameters .= '|' . $field->getTypeValidatorName();
         $rules[$field->getName()] = $parameters;
     }
     $validator = Validator::make($input, $rules);
     if ($validator->fails() === true) {
         $failed = $validator->failed();
         $validationMessages = $validator->messages();
         $messages = [];
         foreach ($failed as $field => $rules) {
             $messages[$field] = [];
             foreach ($rules as $rule => $parameters) {
                 $messages[$field][$rule] = $validationMessages->first($field);
             }
         }
     }
     return $messages;
 }
 /**
  * {@inheritdoc}
  */
 public function retrieveIdFromInstance(CompiledTransformMappingInterface $transformMapping, $instance)
 {
     $primaryField = $transformMapping->findPrimaryKeyField();
     if ($primaryField !== null) {
         return $this->getFieldValue($instance, $primaryField->getCallback());
     }
     return null;
 }