protected function setFields($createOrUpdateStruct, array $fields, ContentType $contentType, $step)
    {
        $fields = $this->normalizeFieldDefs($fields, $step);

        foreach ($fields as $fieldIdentifier => $fieldLanguages) {
            foreach ($fieldLanguages as $language => $fieldValue) {
                if (!isset($contentType->fieldDefinitionsByIdentifier[$fieldIdentifier])) {
                    throw new \Exception("Field '$fieldIdentifier' is not present in content type '{$contentType->identifier}'");
                }

                $fieldDefinition = $contentType->fieldDefinitionsByIdentifier[$fieldIdentifier];
                $fieldValue = $this->getFieldValue($fieldValue, $fieldDefinition, $contentType->identifier, $step->context);
                $createOrUpdateStruct->setField($fieldIdentifier, $fieldValue, $language);
            }
        }
    }