List <BarItem> Validate(CommonBarItemCollection items)
        {
            var filteredItems = items.Where(x => x is BarItem).Select(x => x as BarItem).Where(x => x.IsEnabled && x.IsVisible && !(x is BarItemSeparator)).ToList();

            UpdateImages(filteredItems);
            if (filteredItems.Count <= maxItemsInRadialmenu)
            {
                return(filteredItems);
            }
            var firstLevelItems        = filteredItems.Where(i => i is BarSubItem).ToList();
            var anotherItems           = filteredItems.Where(i => !(i is BarSubItem)).ToList();
            int additionCount          = maxItemsInRadialmenu - 1 - firstLevelItems.Count;
            var firstLevelAnotherItems = anotherItems.Take(additionCount).ToList();

            anotherItems.RemoveRange(0, additionCount);
            var secondLevelItems = anotherItems;

            firstLevelItems.AddRange(firstLevelAnotherItems);
            var popupMenu = new PopupMenu();

            foreach (var item in secondLevelItems)
            {
                popupMenu.Items.Add(item);
            }
            firstLevelItems.Add(new BarSplitButtonItem()
            {
                PopupControl = popupMenu, Content = "Actions"
            });
            return(firstLevelItems.ToList());
        }