Stream: добавить событие конца потока
Solution: сделать приватные поля readonly, где возможно
Lexer: написать простейшую реализацию
Dfa: начать переделывать обработку ошибочных символов.