/**
  * Validates input FieldDefinitionCreateStruct.
  *
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentException
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentType
  * @throws \eZ\Publish\Core\Base\Exceptions\InvalidArgumentValue
  *
  * @param FieldDefinitionCreateStruct $fieldDefinitionCreateStruct
  * @param string $argumentName
  *
  * @return void
  */
 protected function validateInputFieldDefinitionCreateStruct(FieldDefinitionCreateStruct $fieldDefinitionCreateStruct, $argumentName = "\$fieldDefinitionCreateStruct")
 {
     // Required properties
     if ($fieldDefinitionCreateStruct->fieldTypeIdentifier === null) {
         throw new InvalidArgumentException($argumentName, "Property 'fieldTypeIdentifier' is required");
     }
     if (!is_string($fieldDefinitionCreateStruct->fieldTypeIdentifier)) {
         throw new InvalidArgumentType($argumentName . "->fieldTypeIdentifier", "string", $fieldDefinitionCreateStruct->fieldTypeIdentifier);
     }
     if ($fieldDefinitionCreateStruct->fieldTypeIdentifier === "") {
         throw new InvalidArgumentValue($argumentName . "->fieldTypeIdentifier", $fieldDefinitionCreateStruct->fieldTypeIdentifier);
     }
     if ($fieldDefinitionCreateStruct->identifier === null) {
         throw new InvalidArgumentException($argumentName, "Property 'identifier' is required");
     }
     if (!is_string($fieldDefinitionCreateStruct->identifier)) {
         throw new InvalidArgumentType($argumentName . "->identifier", "string", $fieldDefinitionCreateStruct->identifier);
     }
     if ($fieldDefinitionCreateStruct->identifier === "") {
         throw new InvalidArgumentValue($argumentName . "->identifier", $fieldDefinitionCreateStruct->identifier);
     }
     // Optional properties
     if ($fieldDefinitionCreateStruct->names !== null) {
         $this->domainMapper->validateTranslatedList($fieldDefinitionCreateStruct->names, $argumentName . "->names");
     }
     if ($fieldDefinitionCreateStruct->descriptions !== null) {
         $this->domainMapper->validateTranslatedList($fieldDefinitionCreateStruct->descriptions, $argumentName . "->descriptions");
     }
     if ($fieldDefinitionCreateStruct->fieldGroup !== null && !is_string($fieldDefinitionCreateStruct->fieldGroup)) {
         throw new InvalidArgumentType($argumentName . "->fieldGroup", "string", $fieldDefinitionCreateStruct->fieldGroup);
     }
     if ($fieldDefinitionCreateStruct->position !== null && !is_int($fieldDefinitionCreateStruct->position)) {
         throw new InvalidArgumentType($argumentName . "->position", "integer", $fieldDefinitionCreateStruct->position);
     }
     if ($fieldDefinitionCreateStruct->isTranslatable !== null && !is_bool($fieldDefinitionCreateStruct->isTranslatable)) {
         throw new InvalidArgumentType($argumentName . "->isTranslatable", "boolean", $fieldDefinitionCreateStruct->isTranslatable);
     }
     if ($fieldDefinitionCreateStruct->isRequired !== null && !is_bool($fieldDefinitionCreateStruct->isRequired)) {
         throw new InvalidArgumentType($argumentName . "->isRequired", "boolean", $fieldDefinitionCreateStruct->isRequired);
     }
     if ($fieldDefinitionCreateStruct->isInfoCollector !== null && !is_bool($fieldDefinitionCreateStruct->isInfoCollector)) {
         throw new InvalidArgumentType($argumentName . "->isInfoCollector", "boolean", $fieldDefinitionCreateStruct->isInfoCollector);
     }
     if ($fieldDefinitionCreateStruct->isSearchable !== null && !is_bool($fieldDefinitionCreateStruct->isSearchable)) {
         throw new InvalidArgumentType($argumentName . "->isSearchable", "boolean", $fieldDefinitionCreateStruct->isSearchable);
     }
     // These properties are of type 'mixed' and are validated separately by the corresponding field type
     // validatorConfiguration
     // fieldSettings
     // defaultValue
 }