@Override
 public boolean equals(Object obj) {
   if (this == obj) return true;
   if (obj == null) return false;
   if (getClass() != obj.getClass()) return false;
   SQLSelectQueryBlock other = (SQLSelectQueryBlock) obj;
   if (parenthesized ^ other.parenthesized) return false;
   if (distionOption != other.distionOption) return false;
   if (from == null) {
     if (other.from != null) return false;
   } else if (!from.equals(other.from)) return false;
   if (groupBy == null) {
     if (other.groupBy != null) return false;
   } else if (!groupBy.equals(other.groupBy)) return false;
   if (into == null) {
     if (other.into != null) return false;
   } else if (!into.equals(other.into)) return false;
   if (selectList == null) {
     if (other.selectList != null) return false;
   } else if (!selectList.equals(other.selectList)) return false;
   if (where == null) {
     if (other.where != null) return false;
   } else if (!where.equals(other.where)) return false;
   return true;
 }