/// <summary>
        /// Updates the web portal bundle files. This controls which files are bundled and sent to the client browser.
        /// </summary>
        /// <param name="bundler">The bundler instance.</param>
        /// <returns>A task which is complete when the bundles are updated.</returns>
        public virtual void UpdateBundles(Bundler bundler)
        {
            bundler.AssertNotNull(nameof(bundler));

            bundler.Clear();

            Assets startUpAssets    = AggregateStartupAssets();
            Assets nonStartUpAssets = AggregateNonStartupAssets();

            // build the start up javascript and css files and bundle them
            List <string> startupClasses = new List <string>(startUpAssets.JavaScript);
            List <string> startupStyles  = new List <string>(startUpAssets.Css);

            bundler.BundleStartupAssets(startupClasses.ToArray(), startupStyles.ToArray());

            // build the non startup files and bundle them
            List <string> nonStartupClasses = new List <string>(nonStartUpAssets.JavaScript);
            List <string> nonStartupStyles  = new List <string>(nonStartUpAssets.Css);

            bundler.BundleNonStartupAssets(nonStartupClasses.ToArray(), nonStartupStyles.ToArray());
        }