Tree.tag is now private[core]
some refactorings for the @ast macro