rewrote ASTPrinter with visitor pattern