Made ExpressionVisitor and TypeVisitor generic