Кто знает скалу или этот патерн, можете обьяснить как и что здесь происходит? Я понимаю какой должен быть результат выполнения но не понимаю как именно его достигли. Для возвращаемого типа eval и expect реализовали метод flatMap? И еще непонятно что если клиент уже прошел какой-то сценарий, как он при следущем сообщении пропускает пройденные ?