internal bool StartTable(TableSpec spec, List<Block> lines)
        {
            // Rewind, parse the header row then fast forward back to current pos
            if (lines.Count >= 1)
            {
                int savepos = position;
                position = lines[0].lineStart;
                for (var i = 0; i < lines.Count; i++) {
                    var row = spec.ParseRow(this);
                    if (row == null) break;
                    spec.Headers.Add(row);
                }
                if (spec.Headers.Count != lines.Count) return false;
                position = savepos;
                lines.Clear();
            }

            // Parse all rows
            while (true)
            {
                int savepos = position;

                var row=spec.ParseRow(this);
                if (row!=null)
                {
                    spec.Rows.Add(row);
                    continue;
                }

                position = savepos;
                break;
            }

            return true;
        }