void ProcessTable(Body Body, Table Table)
        {
            TableRow[]      TableRows  = Table.Elements <TableRow>().ToArray();
            TableProperties TableProps = Table.Elements <TableProperties>().First();
            TableGrid       TableGrid  = Table.Elements <TableGrid>().First();

            // TODO: Change exception types
            if (TableRows.Length != 1)
            {
                for (int j = 0; j < TableRows.Length; j++)
                {
                    TableCell[] Cells = TableRows[j].Elements <TableCell>().ToArray();

                    for (int i = 0; i < Cells.Length; i++)
                    {
                        Process(Body, Cells[i]);
                    }
                }
            }
            else
            {
                TableRow    TemplateRow = TableRows[0];
                TableCell[] Cells       = TemplateRow.Elements <TableCell>().ToArray();

                WordTable WTable = WordTableContext.Begin();
                for (int i = 0; i < Cells.Length; i++)
                {
                    WTable.BeginColumn();
                    Process(Body, Cells[i]);
                    WTable.EndColumn();
                }

                WordTable.Column[] Columns = WTable.GetColumns();
                WordTableContext.End();

                int RowCount = 0;

                if (Columns.Length > 0)
                {
                    RowCount = Columns.Select(C => (C.RefArray?.Count - 1) ?? 0).Max();
                }

                List <TableCell> TableCells = new List <TableCell>();

                for (int i = 0; i < RowCount; i++)
                {
                    TableCells.Clear();

                    for (int j = 0; j < Columns.Length; j++)
                    {
                        JArray RefArray = Columns[j].RefArray;
                        if (RefArray == null)
                        {
                            continue;
                        }

                        if (i < RefArray.Count - 1)
                        {
                            object Val = RefArray[i + 1][Columns[j].Identifier].Value <JValue>().Value;

                            // TODO: Handle stuff other than strings?
                            TableCells.Add(GenerateCell(Val.ToString()));
                        }
                        else
                        {
                            TableCells.Add(GenerateCell(""));
                        }
                    }

                    Table.AppendChild(GenerateRow(TableCells.ToArray()));
                }
            }
        }