func WalkExprConst(v Visitor, expr Expr) {
	WalkExpr(v, expr)
	// TODO(radu): we should verify that WalkExpr returns changed == false. Unfortunately that
	// is not the case today because walking through non-pointer implementations of Expr (like
	// DBool, DTuple) causes new nodes to be created. We should make all Expr implementations be
	// pointers (which will also remove the need for using reflect.ValueOf above).
}
// WalkExprConst is a variant of WalkExpr for visitors that do not modify the expression.
WalkExprConst is a variant of WalkExpr for visitors that do not modify the expression.
// WalkExprConst is a variant of WalkExpr for visitors that do not modify the expression .
func WalkExprConst(v Visitor, expr Expr) {
	WalkExpr(v, expr)
}
func WalkExprConst ( v Visitor , expr Expr ) { WalkExpr ( v , expr ) }
WalkExprConst is a variant of WalkExpr for visitors that do not modify the expression.
WalkExprConst is a variant of WalkExpr for visitors that do not modify the expression .
// TODO(radu): we should verify that WalkExpr returns changed == false. Unfortunately that // is not the case today because walking through non-pointer implementations of Expr (like // DBool, DTuple) causes new nodes to be created. We should make all Expr implementations be // pointers (which will also remove the need for using reflect.ValueOf above).