/// <summary>
        /// Mark the specified dependency for inclusion.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <param name="position">The position.</param>
        /// <returns></returns>
#pragma warning disable CS0618 // Type or member is obsolete
        public WebDependencies Include(WebDependency value, WebDependencyPosition position = WebDependencyPosition.Default)
        {
            if (this.includes == null)
            {
                this.includes = new Dictionary <string, Tuple <WebDependency, WebDependencyPosition> >();
            }

            Tuple <WebDependency, WebDependencyPosition> includeCandidate;

            if (!this.includes.TryGetValue(value.Name, out includeCandidate))
            {
                // not included yet
                this.includes.Add(value.Name, new Tuple <WebDependency, WebDependencyPosition>(value, position));
            }
            else
            {
                // already included. Take the highest position
                var replace = false;
                if (position != WebDependencyPosition.Default)
                {
                    if (includeCandidate.Item2 == WebDependencyPosition.Default)
                    {
                        replace = true;
                    }
                    else if (position < includeCandidate.Item2)
                    {
                        replace = true;
                    }
                    else
                    {
                        // do not replace
                    }
                }
                else
                {
                    // position is default, do not replace
                }

                if (replace)
                {
                    this.includes[value.Name] = new Tuple <WebDependency, WebDependencyPosition>(value, position);
                }
            }

            return(this);
        }
        /// <summary>
        /// Renders the specified dependency.
        /// </summary>
        /// <param name="value">The value.</param>
        /// <returns>HTML</returns>
        /// <exception cref="System.ArgumentNullException">value</exception>
        public MvcHtmlString Render(WebDependency value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("value");
            }

            if (value.Files != null)
            {
                var sb = new StringBuilder();
                for (int i = 0; i < value.Files.Count; i++)
                {
                    RenderDependency(value.Files[i], sb);
                }

                return(MvcHtmlString.Create(sb.ToString()));
            }

            return(MvcHtmlString.Empty);
        }