вообще императивные языки конечно костыль. Вот у меня есть в классе поле которое Optinal. Но я знаю что после перехода в определенное состояние оно никогда не будет больше опшинал. И как это выразить правильно, - не понятно.
т.е. с одной стороны должно быть просто переходы между стейтами, но при этом тот обработчик где опшин не None уже вешается после того как я присвоил что то опшину