static void GenerateSnapListForCurrentLevel(GridLevelNode node, SnapDocument document, DocumentPosition position, int level)
        {
            GridView grid = node.LevelTemplate as GridView;

            if (grid == null || grid.VisibleColumns.Count == 0)
            {
                return;
            }

            SnapList list = document.CreateSnList(document.Range.End, grid.Name);

            list.BeginUpdate();

            ApplyDataSource(list, node);
            ApplyGroups(list, grid);
            ApplySorting(list, grid);
            ApplyFilter(list, grid);
            Table        table    = null;
            SnapDocument template = null;

            MakeTemplate(list, grid, out table, out template);
            MakeReportFooter(list, grid);
            ApplyDetails(node, table, template, level);

            list.ApplyTableStyles(level);
            list.EndUpdate();
        }