Ответ 1
Возможно, вам стоит взглянуть на https://github.com/scala/scala/blob/2.10.x/src/reflect/scala/reflect/api/Trees.scala#L606, особенно на классы Traverser, Transformer и методы подстановки (Tree.substituteSymbols
, Tree.substituteTypes
или Tree.substituteThis
). Если вы хотите извлечь метод из дерева, вы можете использовать Traverser
и переопределить метод traverse
. В методе прохождения проверьте, соответствует ли node методу, который вы хотите. Если да, то все готово. Если нет, вы вызываете super.traverse
.