/**
  * Handle the incoming form data
  *
  * @param Element $element The element
  * @param ValidationElement $validationElement
  * @param mixed $modelValue
  * @param FormBuilder $formBuilder
  * @return void
  */
 public function handleIncomingFormValues(Element $element, ValidationElement $validationElement, $modelValue, FormBuilder $formBuilder)
 {
     $elementName = $element->getName();
     if ($element->getElementType() === 'CHECKBOX') {
         $groupedElement = false;
         if ($element->getParentElement()->getElementType() === 'CHECKBOXGROUP') {
             $incomingName = $element->getParentElement()->getName();
             $groupedElement = true;
         } else {
             $incomingName = $elementName;
         }
         $incomingData = $formBuilder->getIncomingData()->getIncomingField($incomingName);
         $checked = false;
         if (is_array($incomingData)) {
             if (isset($incomingData[$elementName]) && $incomingData[$elementName] !== '') {
                 $this->setAttribute($element, 'checked', 'checked');
                 $checked = true;
             } else {
                 $this->setAttribute($element, 'checked', null);
             }
         } else {
             if (!empty($modelValue) && $incomingData === $modelValue || $incomingData === $incomingName . '-' . $element->getElementCounter()) {
                 $this->setAttribute($element, 'checked', 'checked');
                 $checked = true;
             } else {
                 $this->setAttribute($element, 'checked', null);
             }
         }
         if ($groupedElement && $checked) {
             $element->getParentElement()->setAdditionalArgument('atLeastOneCheckedChildElement', true);
         }
     } elseif ($element->getElementType() === 'RADIO') {
         $groupedElement = false;
         if ($element->getParentElement()->getElementType() === 'RADIOGROUP') {
             $incomingName = $element->getParentElement()->getName();
             $groupedElement = true;
         } else {
             $incomingName = $elementName;
         }
         $checked = false;
         $incomingData = $formBuilder->getIncomingData()->getIncomingField($incomingName);
         if (!empty($modelValue) && $incomingData === $modelValue || $incomingData === $incomingName . '-' . $element->getElementCounter()) {
             $this->setAttribute($element, 'checked', 'checked');
             $checked = true;
         } else {
             $this->setAttribute($element, 'checked', null);
         }
         if ($groupedElement && $checked) {
             $element->getParentElement()->setAdditionalArgument('atLeastOneCheckedChildElement', true);
         }
     } elseif ($element->getElementType() === 'OPTION') {
         $modelValue = (string) ($element->getAdditionalArgument('value') ?: $element->getElementCounter());
         if ($element->getParentElement()->getElementType() === 'OPTGROUP') {
             $parentName = $element->getParentElement()->getParentElement()->getName();
         } else {
             $parentName = $element->getParentElement()->getName();
         }
         $incomingData = $formBuilder->getIncomingData()->getIncomingField($parentName);
         /* Multiselect */
         if (is_array($incomingData)) {
             if (in_array($modelValue, $incomingData, true)) {
                 $element->setHtmlAttribute('selected', 'selected');
             } else {
                 $element->setHtmlAttribute('selected', null);
             }
         } else {
             if ($modelValue === $incomingData) {
                 $element->setHtmlAttribute('selected', 'selected');
             } else {
                 $element->setHtmlAttribute('selected', null);
             }
         }
     } elseif ($element->getElementType() === 'TEXTAREA') {
         $incomingData = $formBuilder->getIncomingData()->getIncomingField($elementName);
         $element->setAdditionalArgument('text', $incomingData);
     } elseif ($element->getElementType() === 'FILEUPLOAD') {
         if ($formBuilder->getValidationErrors() == null || $formBuilder->getValidationErrors() && $formBuilder->getValidationErrors()->forProperty($elementName)->hasErrors() !== true) {
             $uploadedFiles = $formBuilder->getIncomingData()->getIncomingField($elementName);
             if (is_array($uploadedFiles)) {
                 foreach ($uploadedFiles as $key => &$file) {
                     $tempFilename = $this->saveUploadedFile($file['tmp_name']);
                     if (!$tempFilename) {
                         unset($uploadedFiles[$key]);
                         continue;
                     }
                     $file['tempFilename'] = $tempFilename;
                 }
                 $element->setAdditionalArgument('uploadedFiles', $uploadedFiles);
                 $this->setAttribute($element, 'value', '');
                 $this->sessionUtility->setSessionData($elementName, $uploadedFiles);
             }
         }
     }
 }