private void readChar() { if (!more()) { throw fail("Unexpected end of input"); } var next = (char)input.Read(); if (next == '\n') { ++lineNumber; previousLines.Add(LineSoFar); if (previousLines.Count > 3) { previousLines.RemoveAt(0); } lineSoFar.Clear(); } sb.Append(next); lineSoFar.Append(next); }