/// <summary>
        /// Called internally to go from installing a package to installing a sample.
        /// </summary>
        /// <param name="contentToInstall">The Content Pack that contains a sample to install</param>
        static void InstallContentSample(ContentPack contentToInstall)
        {
            ConditionalLog($"InstallContentSample {contentToInstall.DisplayName}");

            // Content must be installed or installing to add a sample
            if (!(contentToInstall.InstallStatus.HasFlag(InstallationStatus.Installed) || contentToInstall.InstallStatus.HasFlag(InstallationStatus.Installing)))
            {
                return;
            }

            StartEditorUpdates();
            contentToInstall.InstallStatus |= InstallationStatus.InstallQueued;

            // We stick the sample event at the beginning of the list because it happens automatically after an install
            QueuedEvents.Insert(0, new ContentEvent {
                action = PackageAction.SampleInstall, targetPack = contentToInstall
            });
            OnContentChanged?.Invoke();
        }
        /// <summary>
        /// Called internally to go from installing a package to making it writeable.
        /// </summary>
        /// <param name="contentToEmbed">The Content Pack to make a writeable package</param>
        static void EmbedContent(ContentPack contentToEmbed)
        {
            ConditionalLog($"EmbedContent {contentToEmbed.DisplayName}");

            // Content must be installed or installing to embed
            if (!(contentToEmbed.InstallStatus.HasFlag(InstallationStatus.Installed) || contentToEmbed.InstallStatus.HasFlag(InstallationStatus.Installing)))
            {
                return;
            }

            StartEditorUpdates();
            contentToEmbed.InstallStatus |= InstallationStatus.InstallQueued;

            // We stick the embed event at the beginning of the list because it happens automatically after an install
            QueuedEvents.Insert(0, new ContentEvent {
                action = PackageAction.Embed, targetPack = contentToEmbed
            });
            OnContentChanged?.Invoke();
        }