private void replace(SqlExpr before, SqlExpr after) {
   before.replaceWith(after);
   after.visit(this);
 }
 public void optimize(SqlExpr sqlExpr) {
   sqlExpr.visit(this);
 }