Здравствуйте, ionoy, Вы писали:
I>Такое реально сделать? Я понимаю, что можно самому иерархию классов замутить, но может быть есть более человеческий способ?
Такого нет. Но и наследование тут не нужно. Просто с дублируй поле Ast у обоих вхождений. А обобщенную обработку можно сделать через паттерн-матчинг.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.