Hi Doug: Johan and I had an interesting discussion about traversing into terminal classes, such as Ident, String. So far I have thought that we never want to traverse into those classes since they are predefined (many of them by Java) and we cannot modify them. Johan was pointing out that this view of the world is not correct when we have generic visitors. For A = Ident. the generic printing visitor is: PrintVisitor { before -> A, ident, Ident (@ space(); out.print(source.get_ident()); needSpace = true; @) which means we have to traverse into Ident so that we go through the edge A, ident, Ident. Therefore, the correct view is: It is ok to traverse to terminal classes provided no code is defined for them. When you use generic visitors, you are required to traverse to the terminal classes if you want to process them by the generic visitors. Do you agree? -- Karl