/// <summary>
        /// Called when the list of available and installed packages is ready.
        /// Updates the installation status of all Content Packs to match with this data.
        /// </summary>
        static void CompleteStatusEvent()
        {
            s_StatusInitialized = true;
            s_StatusRequested   = false;

            var listRequest = s_CurrentEvent.request as ListRequest;

            if (listRequest == null)
            {
                return;
            }

            if (listRequest.Status == StatusCode.Failure)
            {
                OnStatusUpdate?.Invoke(false, listRequest.Error.message);
                return;
            }

            var packageCollection = listRequest.Result;

            // Gather all content packs
            var contentPackGuids = AssetDatabase.FindAssets(k_CollectionSearchFilter);

            AvailableContentPacks.Clear();

            foreach (var guid in contentPackGuids)
            {
                var assetPath          = AssetDatabase.GUIDToAssetPath(guid);
                var currentContentPack = AssetDatabase.LoadAssetAtPath <ContentPack>(assetPath);
                currentContentPack.Path = assetPath.ToLower();
                AvailableContentPacks.Add(currentContentPack);
            }

            // See which ones are already installed
            // Update our list of packs
            foreach (var currentContentPack in AvailableContentPacks)
            {
                // If package collection contains content pack, it is installed, otherwise it is not
                currentContentPack.InstallStatus = InstallationStatus.Unknown;

                var installedPackage = packageCollection.FirstOrDefault(package => package.name == currentContentPack.PackageName);
                if (installedPackage != null)
                {
                    currentContentPack.InstallStatus |= InstallationStatus.Installed;
                    var contentPackVersion = currentContentPack.Version;
                    if (string.IsNullOrEmpty(contentPackVersion) || contentPackVersion == k_AutoPreviewVersion)
                    {
                        if (string.IsNullOrEmpty(installedPackage.versions.verified) || contentPackVersion == k_AutoPreviewVersion)
                        {
                            contentPackVersion = installedPackage.versions.latestCompatible;
                        }
                        else
                        {
                            contentPackVersion = installedPackage.versions.verified;
                        }

                        currentContentPack.AutoVersion = contentPackVersion;
                    }
                    else
                    {
                        currentContentPack.AutoVersion = "";
                    }

                    if (installedPackage.version != contentPackVersion)
                    {
                        currentContentPack.InstallStatus |= InstallationStatus.DifferentVersion;
                    }
                }

                // Check if an installation action is queued
                var contentEvent = QueuedEvents.Find(currentEvent => currentEvent.targetPack == currentContentPack);
                if (contentEvent != null)
                {
                    if (contentEvent.action == PackageAction.Add)
                    {
                        currentContentPack.InstallStatus |= InstallationStatus.InstallQueued;
                    }
                    else
                    {
                        currentContentPack.InstallStatus |= InstallationStatus.UninstallRequested;
                    }
                }
            }

            // Gather all products
            var contentProductGuids = AssetDatabase.FindAssets(k_ProductSearchFilter);

            AvailableContentProducts.Clear();

            foreach (var guid in contentProductGuids)
            {
                var currentContentProduct = AssetDatabase.LoadAssetAtPath <ContentProduct>(AssetDatabase.GUIDToAssetPath(guid));
                AvailableContentProducts.Add(currentContentProduct);
            }


            OnStatusUpdate?.Invoke(true, "Successfully updated content packs status");
        }