//-----------------------------
        // Here's the interface methods
        //-----------------------------

        /// <inheritdoc />
        public virtual IEnumerable <string> GetViewFolders(ControllerContext controllerContext)
        {
            string area       = HandlebarsViewEngine.ExtractAreaName(controllerContext);
            string controller = HandlebarsViewEngine.ExtractControllerName(controllerContext);

            string viewsfoldername               = ViewsFolderName;
            string sharedviewsfoldername         = SharedViewsFolderName;
            bool   allowcontrollerlessviewfolder = AllowControllerlessViewFolder;

            if (!string.IsNullOrEmpty(area))
            {
                string areasfoldername = AreasFolderName;

                yield return("~/" + areasfoldername + "/" + area + "/" + viewsfoldername + "/" + controller + "/");                                 // "~/Areas/areaname/Views/controllername/"

                if (!string.IsNullOrEmpty(sharedviewsfoldername))
                {
                    yield return("~/" + areasfoldername + "/" + area + "/" + viewsfoldername + "/" + sharedviewsfoldername + "/");                      // "~/Areas/areaname/Views/_Shared/"
                }
                if (allowcontrollerlessviewfolder)
                {
                    yield return("~/" + areasfoldername + "/" + area + "/" + viewsfoldername + "/");                                                    // "~/Areas/areaname/Views/"
                }
            }
            yield return("~/" + viewsfoldername + "/" + controller + "/");                                                                      // "~/Views/controllername/"

            if (!string.IsNullOrEmpty(sharedviewsfoldername))
            {
                yield return("~/" + viewsfoldername + "/" + sharedviewsfoldername + "/");                                                           // "~/Views/_Shared/"
            }
            if (allowcontrollerlessviewfolder)
            {
                yield return("~/" + viewsfoldername + "/");                                                                                         // "~/Views/"
            }
        }
        /// <inheritdoc />
        public virtual IEnumerable <string> GetPartialsFolders(ControllerContext controllerContext)
        {
            string area       = HandlebarsViewEngine.ExtractAreaName(controllerContext);
            string controller = HandlebarsViewEngine.ExtractControllerName(controllerContext);

            string viewsfoldername       = ViewsFolderName;
            string sharedviewsfoldername = SharedViewsFolderName;
            string partialsfoldername    = PartialsFolderName;

            if (!string.IsNullOrEmpty(area))
            {
                string areasfoldername = AreasFolderName;

                yield return("~/" + areasfoldername + "/" + area + "/" + viewsfoldername + "/" + controller + "/" + partialsfoldername + "/");                                  // "~/Areas/areaname/Views/controllername/_Partials/"

                yield return("~/" + areasfoldername + "/" + area + "/" + viewsfoldername + "/" + partialsfoldername + "/");                                                     // "~/Areas/areaname/Views/_Partials/"
            }

            yield return("~/" + viewsfoldername + "/" + controller + "/" + partialsfoldername + "/");                                                                       // "~/Views/controllername/_Partials/"

            yield return("~/" + viewsfoldername + "/" + partialsfoldername + "/");                                                                                          // "~/Views/_Partials/"
        }