Why, in virtually all places in this functor, do you generate AST nodes with a `unit` position? Instead of the position of the user code that (indirectly) produced that synthetic AST node?