/// <summary>
        /// Деление узла.
        /// </summary>
        /// <returns>Появившийся в результате деления узел.</returns>
        public override TreeNode <T> Split()
        {
            int from  = Keys.Count / 2 + 1;
            int count = Keys.Count - from;
            InternalNode <T> sibling = Factory.CreateInternalNode(Factor);

            sibling.Keys.AddRange(Keys.GetRange(from, count));
            sibling.Children.AddRange(Children.GetRange(from, count + 1));

            Keys     = Keys.GetRange(0, from - 1);
            Children = Children.GetRange(0, from);
            return(sibling);
        }