/// <summary>
        /// Updates all assets from the configuration asset's included diretories.
        /// </summary>
        /// <param name="configurationAsset">This function takes in a configuration asset file and use the data to find and update project affected assets.</param>
        public static void OnUpdateIncludedAssetsUsingConfiguration(ConfigurationAsset configurationAsset)
        {
            // Checking if configuration file is valid
            bool isValidConfigurationAssetFile = AssetImportDirectory.IsValidConfigurationAsset(configurationAsset);

            // Checking if a configuration asset is not null.
            if (isValidConfigurationAssetFile)
            {
                // Checking if the configuration asset's importer assets library has included directories assigned.
                bool configurationIncludesDirectories = configurationAsset.GetIncludedAssetsDirectoryLibraryCount() > 0;

                // Checking if directories are included.
                if (configurationIncludesDirectories)
                {
                    // Getting a list of all included asset directories in the configuration asset file.
                    AssetsDirectoryLibrary includedAssetDirectoryLibrary = configurationAsset.GetIncludedAssetsDirectoryLibrary();

                    // Checking through all the found included directories assigned in the configuration asset file.
                    foreach (string directory in includedAssetDirectoryLibrary.Directories)
                    {
                        // Reimporting assets from the included directory.
                        AssetsReimporter.ReimportAssetsAtPath(directory, configurationAsset);
                    }
                }
                else
                {
                    // Checking if the configuration asset allow debug is enabled to log to messages to the console.
                    if (configurationAsset.AllowDebug)
                    {
                        // This message that will be logged to the unity's debug console.
                        string logMessage = "There are currently no included asset directories to update.";

                        // Logging a new warning message to the unity debug console.
                        Debugger.LogWarning(className: classLogName, message: logMessage);
                    }

                    return;
                }
            }
            else
            {
                // Checking if the configuration asset allow debug is enabled.
                if (configurationAsset.AllowDebug)
                {
                    // This message that will be logged to the unity's debug console.
                    string logMessage = "Configuration file missing.";

                    // Logging a new warning message to the unity debug console.
                    Debugger.LogWarning(className: classLogName, message: logMessage);
                }

                return;
            }
        }
        /// <summary>
        /// Assigns asset directories to newly created configuration asset files.
        /// This static function also adds the project affected or included asset directories to a newly created configuration asset file.
        /// </summary>
        /// <param name="configurationAsset">Takes in the newly created configuration asset.</param>
        /// <param name="assetDirectory">Takes in the asset directory path.</param>
        public static void AddConfigurationIncludedAssetDirectory(ConfigurationAsset configurationAsset, string assetDirectory)
        {
            // Checking if asset importer configuration doesn't include any directories.
            bool configurationHasNoIncludedAssetDirectories = configurationAsset.GetIncludedAssetsDirectoryLibraryCount() <= 0;

            // Checking if asset importer configuration loaded successfully and that it doesn't include directories.
            if (AssetImportDirectory.IsValidConfigurationAsset(configurationAsset) && configurationHasNoIncludedAssetDirectories)
            {
                // Getting the directory of the newly created configuration asset.
                string newConfigurationAssetDirectory = AssetImportDirectory.GetAssetDirectory(assetDirectory);

                // Assigning the directory reference to the asset importer.
                configurationAsset.AddConfigurationAssetIncludedDirectoryToLibrary(newConfigurationAssetDirectory);

                // Checking for sub directories to include in the asset importer configuration directory.
                string[] subDirectoriesToInclude = AssetDatabase.GetSubFolders(newConfigurationAssetDirectory);

                // Checking if sun directories are found/initialized.
                bool subDirectoriesFound = subDirectoriesToInclude.Length > 0;

                // --Checking if sub directories were found in the asset directory.
                if (subDirectoriesFound)
                {
                    // Looping through found included sub directories to add to the asset importer configuration asset file.
                    foreach (string directory in subDirectoriesToInclude)
                    {
                        // Adding the scriptable object import configuration asset path to the newely created configuration asset file.
                        configurationAsset.AddConfigurationAssetIncludedDirectoryToLibrary(directory);
                    }
                }

                // Save asset data base.
                AssetDatabase.SaveAssets();

                // Refreshing the assets data base.
                AssetDatabase.Refresh();

                // Message to log in the unity debug console window.
                string logMessage = "A new import configuration asset file was successfully created at path : " + newConfigurationAssetDirectory;

                // Logging configuration asset creation successs message to the unity debugger console.
                Debugger.Log(className: classLogName, message: logMessage);
            }
        }