public function addFile($file, $type = '', $locale = null, $filename = null, $keepOriginal = false): void
    {
        if ($file instanceof Traversable || is_array($file)) {
            $this->addFiles($file, $type, $locale, $keepOriginal);
        } else {
            $locale = $this->normalizeLocaleString($locale);

            if (is_string($file)) {
                $asset = AssetUploader::uploadFromBase64($file, $filename, $keepOriginal);
            } else {
                $asset = AssetUploader::upload($file, $filename, $keepOriginal);
            }

            if ($asset instanceof Asset) {
                $asset->attachToModel($this, $type, $locale);
            }
        }
    }