/// <inheritdoc/>
        /// <summary>
        /// Returns direct URL to file if it is a File item, otherwise
        /// builds url from items
        /// </summary>
        public override Item DoApply(Item root)
        {
            // populate properties from xml
            XmlPropertyAttribute.BindXml(root.node, this);

            // log info
            Log(nameof(DoApply), $"Generating URL for {Type} ID {Id})");

            // generate url
            var url = Type == "File"
                ? Innovator.getFileUrl(Id, UrlType.None)
                : $"{BaseUrl}/default.aspx?StartItem={Type}:{Id}";

            // return result
            return(Innovator.newResult(url));
        }