/// <summary>
        /// Create new Stacked items at the panel
        /// </summary>
        /// <param name="action">Action where you must add items to the stacked panel</param>
        /// <returns>Panel where stacked items was created</returns>
        public Panel CreateStackedItems(Action <StackedItem> action)
        {
            if (action == null)
            {
                throw new ArgumentNullException(nameof(action));
            }

            var stackedItem = new StackedItem(nameConvention);

            action.Invoke(stackedItem);

            if (stackedItem.ItemsCount < 2 || stackedItem.ItemsCount > 3)
            {
                throw new InvalidOperationException("You must create 2 or three items in the StackedItems");
            }

            RibbonItemData item1 = stackedItem.Buttons[0].Finish();
            RibbonItemData item2 = stackedItem.Buttons[1].Finish();

            IList <RibbonItem> ribbonItems;

            if (stackedItem.ItemsCount == 3)
            {
                RibbonItemData item3 = stackedItem.Buttons[2].Finish();
                ribbonItems = Source.AddStackedItems(item1, item2, item3);
            }
            else
            {
                ribbonItems = Source.AddStackedItems(item1, item2);
            }

            for (var i = 0; i < stackedItem.Buttons.Count; ++i)
            {
                stackedItem.Buttons[i].DoPostProcessing(ribbonItems[i]);
            }

            return(this);
        }