public ProductSimpleNode(string name, List <List <string> > elements, string itemsContainer, List <int> productsIds, List <MetaReplyMessage> foldersMsgs, string sessionContainer, string addedPrefix = DefaultStrings.Plus, string addBtnName = DefaultStrings.Add, MetaInlineMessage metaMessage = null, bool needBack = true) : base( CreateHead(name, foldersMsgs[0], metaMessage), CreateItemNodes(name, itemsContainer, elements, productsIds, sessionContainer, addedPrefix) ) { if (foldersMsgs.Count != elements.Count) { throw new ArgumentException("Количество названий разделов не совпадает с количеством секций."); } int itemNumber = 0; RecursiveSections(HeadNode); void RecursiveSections(ITreeNode parent, int index = 0) { if (index < elements.Count - 1) { for (int i = 0; i < elements[index].Count; i++) { var foldersMsg = foldersMsgs[index + 1]; var clonedMsg = new MetaMessage <MetaKeyboardMarkup <Telegram.Bot.Types.ReplyMarkups.KeyboardButton> >(foldersMsg.Text, foldersMsg.MessageType, foldersMsg.File, foldersMsg.MetaKeyboard.Clone(), foldersMsg.parseMode); SimpleNode folder = new SimpleNode(elements[index][i], clonedMsg); folder.SetParent(parent); RecursiveSections(folder, index + 1); } } else { for (int i = 0; i < elements[index].Count; i++) { TailNodes[itemNumber].SetParent(parent); TailNodes[itemNumber++].SetBackLink(HeadNode); } } } }