public void CreateTab([NotNull] ItemUri itemUri, bool deep)
        {
            Assert.ArgumentNotNull(itemUri, nameof(itemUri));

            foreach (var i in Tabs.Items)
            {
                var t = i as TabItem;
                if (t == null)
                {
                    continue;
                }

                var l = t.Content as SitecoreCopTab;
                if (l == null)
                {
                    continue;
                }

                if (l.ItemUri != itemUri || l.Deep != deep)
                {
                    continue;
                }

                t.IsSelected = true;
            }

            ExecuteCompleted completed = delegate(string response, ExecuteResult result)
            {
                if (!DataService.HandleExecute(response, result))
                {
                    return;
                }

                var element = response.ToXElement();
                if (element == null)
                {
                    return;
                }

                var item = ItemHeader.Parse(itemUri.DatabaseUri, element);

                var tabItem = new TabItem();

                var tab = new SitecoreCopTab
                {
                    ItemUri = itemUri,
                    TabItem = tabItem
                };

                var tabHeader = new TabItemHeader
                {
                    Header = item.Name + (deep ? " (Deep)" : string.Empty),
                    Tag    = tab
                };

                tabHeader.Click += delegate { CloseTab(tabItem); };
                tabItem.Header   = tabHeader;

                Tabs.Items.Add(tabItem);

                tabItem.Content    = tab;
                tabItem.IsSelected = true;

                EnableTabs();

                tab.Initialize(itemUri, deep);
            };

            itemUri.Site.DataService.ExecuteAsync("Items.GetItemHeader", completed, itemUri.ItemId.ToString(), itemUri.DatabaseName.Name);
        }