@Override
 public boolean equals(Object obj) {
   if (this == obj) {
     return true;
   }
   if (obj == null) {
     return false;
   }
   if (getClass() != obj.getClass()) {
     return false;
   }
   SQLInListExpr other = (SQLInListExpr) obj;
   if (expr == null) {
     if (other.expr != null) {
       return false;
     }
   } else if (!expr.equals(other.expr)) {
     return false;
   }
   if (not != other.not) {
     return false;
   }
   if (targetList == null) {
     if (other.targetList != null) {
       return false;
     }
   } else if (!targetList.equals(other.targetList)) {
     return false;
   }
   return true;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((unit == null) ? 0 : unit.hashCode());
   result = prime * result + ((value == null) ? 0 : value.hashCode());
   return result;
 }
 @Override
 public int hashCode() {
   final int prime = 31;
   int result = 1;
   result = prime * result + ((expr == null) ? 0 : expr.hashCode());
   result = prime * result + (not ? 1231 : 1237);
   result = prime * result + ((targetList == null) ? 0 : targetList.hashCode());
   return result;
 }
 @Override
 public boolean equals(Object obj) {
   if (this == obj) {
     return true;
   }
   if (obj == null) {
     return false;
   }
   if (getClass() != obj.getClass()) {
     return false;
   }
   MySqlIntervalExpr other = (MySqlIntervalExpr) obj;
   if (unit != other.unit) {
     return false;
   }
   if (value == null) {
     if (other.value != null) {
       return false;
     }
   } else if (!value.equals(other.value)) {
     return false;
   }
   return true;
 }
 @Override
 public void output(StringBuffer buf) {
   value.output(buf);
   buf.append(' ');
   buf.append(unit.name());
 }