protected virtual void RenderTagsActionsTabs()
        {
            BingSearchResponse bsr = this.SearchResponse as BingSearchResponse;
            KapiResponse       ksr = this.SearchResponse as KapiResponse;

            if (ksr != null && ksr.Tags != null)
            {
                foreach (var t in ksr.Tags)
                {
                    var vm = new TagViewModel(t);
                    this.Tags.Add(vm);

                    this.FlattendTagsAndActions.Add(vm);
                    foreach (var a in vm.FilteredActions)
                    {
                        this.FlattendTagsAndActions.Add(a);
                    }
                }

                this.ResponseItemsTabs.Add(new KeyValuePair <string, object>("Tags", this.FlattendTagsAndActions));
                this.ResponseItemsTabs.Add(new KeyValuePair <string, object>("Response", new MyJToken()
                {
                    JToken = ksr.KapiResponseJson
                }));
                this.ResponseItemsTabs.Add(new KeyValuePair <string, object>("Request", new MyJToken()
                {
                    JToken = ksr.KapiRequestJson
                }));

                if (ksr.MiscInfo != null)
                {
                    foreach (var kvp in ksr.MiscInfo)
                    {
                        this.ResponseItemsTabs.Add(new KeyValuePair <string, object>(kvp.Key, new MyJToken()
                        {
                            JToken = kvp.Value
                        }));
                    }
                }
            }
        }
        protected virtual void RenderBoundingBoxesForTags()
        {
            KapiResponse ksr = this.SearchResponse as VSPing.Models.KapiResponse;

            if (ksr == null || ksr.Tags == null)
            {
                return;
            }

            foreach (var tag in ksr.Tags)
            {
                if ((tag.BoundingBox?.DisplayRectangle?.IsBounded ?? false) == false)
                {
                    continue;
                }

                BoundingBox bb = new TagsBoundingBox(tag.DisplayName, tag.BoundingBox);
                this.CanvasItems.Add(bb);
            }

            this.UpdateBoundingBoxPositions();
        }
        protected virtual void RenderDefaultTagsResults()
        {
            BingSearchResponse bsr = this.SearchResponse as VSPing.Models.BingSearchResponse;
            KapiResponse       ksr = this.SearchResponse as VSPing.Models.KapiResponse;

            if (bsr != null) // Signals we got a correct response -> Need to update all of our containers
            {
                foreach (var r in bsr.VisualSearchResults)
                {
                    this.VisualSearchResults.Add(new SearchResultViewModel(r));
                }

                foreach (var r in bsr.ProductSearchResults)
                {
                    this.ProductSearchResults.Add(new SearchResultViewModel(r));
                }

                foreach (var r in bsr.PagesIncludingSearchResults)
                {
                    this.PagesIncludingSearchResults.Add(new SearchResultViewModel(r));
                }
            }
        }