pretty printing for AST nodes as a trait