public static HttpRequestInterceptionBuilder FromItem(
            BundleItem item,
            IEnumerable <KeyValuePair <string, string> > templateValues)
        {
            // Override the template values in the JSON with any user-specified values
            if (item.TemplateValues?.Count > 0)
            {
                foreach (var pair in templateValues)
                {
                    item.TemplateValues[pair.Key] = pair.Value;
                }
            }

            ValidateItem(item, out Uri uri, out Version version);

            var builder = new HttpRequestInterceptionBuilder().ForUri(uri);

            if (item.Method != null)
            {
                builder.ForMethod(new System.Net.Http.HttpMethod(item.Method));
            }

            if (item.RequestHeaders?.Count > 0)
            {
                builder.ForRequestHeaders(TemplateHeaders(item.RequestHeaders, item.TemplateValues));
            }

            if (version != null)
            {
                builder.WithVersion(version);
            }

            if (!string.IsNullOrEmpty(item.Status))
            {
                if (!Enum.TryParse(item.Status, true, out HttpStatusCode httpStatusCode))
                {
                    throw new InvalidOperationException($"Bundle item with Id '{item.Id}' has an invalid HTTP status code '{item.Status}' configured.");
                }

                builder.WithStatus(httpStatusCode);
            }

            if (item.ResponseHeaders?.Count > 0)
            {
                builder.WithResponseHeaders(TemplateHeaders(item.ResponseHeaders, item.TemplateValues));
            }

            if (item.ContentHeaders?.Count > 0)
            {
                builder.WithContentHeaders(TemplateHeaders(item.ContentHeaders, item.TemplateValues));
            }

            if (item.Priority.HasValue)
            {
                builder.HavingPriority(item.Priority.Value);
            }

            if (item.IgnorePath)
            {
                builder.IgnoringPath(ignorePath: true);
            }

            if (item.IgnoreQuery)
            {
                builder.IgnoringQuery(ignoreQuery: true);
            }

            return(builder.SetContent(item));
        }