func (expr *FuncExpr) Walk(v Visitor) Expr {
	ret := expr
	exprs, changed := walkExprSlice(v, expr.Exprs)
	if changed {
		if ret == expr {
			ret = expr.copyNode()
		}
		ret.Exprs = exprs
	}
	if expr.Filter != nil {
		e, changed := WalkExpr(v, expr.Filter)
		if changed {
			if ret == expr {
				ret = expr.copyNode()
			}
			ret.Filter = e
		}
	}

	if expr.OrderBy != nil {
		order, changed := walkOrderBy(v, expr.OrderBy)
		if changed {
			if ret == expr {
				ret = expr.copyNode()
			}
			ret.OrderBy = order
		}
	}
	return ret
}
// Walk implements the Expr interface.
Walk implements the Expr interface.
// Walk implements the Expr interface .
func (expr *FuncExpr) Walk(v Visitor) Expr {
	ret := expr
	exprs, changed := walkExprSlice(v, expr.Exprs)
	if changed {
		if ret == expr {
			ret = expr.copyNode()
		}
		ret.Exprs = exprs
	}
	if expr.Filter != nil {
		e, changed := WalkExpr(v, expr.Filter)
		if changed {
			if ret == expr {
				ret = expr.copyNode()
			}
			ret.Filter = e
		}
	}
	if expr.OrderBy != nil {
		order, changed := walkOrderBy(v, expr.OrderBy)
		if changed {
			if ret == expr {
				ret = expr.copyNode()
			}
			ret.OrderBy = order
		}
	}
	return ret
}
func ( expr * FuncExpr ) Walk ( v Visitor ) Expr { ret := expr exprs , changed := walkExprSlice ( v , expr . Exprs ) if changed { if ret == expr { ret = expr . copyNode ( ) } ret . Exprs = exprs } if expr . Filter != nil { e , changed := WalkExpr ( v , expr . Filter ) if changed { if ret == expr { ret = expr . copyNode ( ) } ret . Filter = e } } if expr . OrderBy != nil { order , changed := walkOrderBy ( v , expr . OrderBy ) if changed { if ret == expr { ret = expr . copyNode ( ) } ret . OrderBy = order } } return ret }
Walk implements the Expr interface.
Walk implements the Expr interface .