@Override
 public boolean equals(Object obj) {
   if (obj == null) {
     return false;
   }
   if (getClass() != obj.getClass()) {
     return false;
   }
   final Group other = (Group) obj;
   if ((this.id == null) ? (other.id != null) : !this.id.equals(other.id)) {
     return false;
   }
   if ((this.specificId == null)
       ? (other.specificId != null)
       : !this.specificId.equals(other.specificId)) {
     return false;
   }
   if ((this.domainId == null)
       ? (other.domainId != null)
       : !this.domainId.equals(other.domainId)) {
     return false;
   }
   if ((this.superGroupId == null)
       ? (other.superGroupId != null)
       : !this.superGroupId.equals(other.superGroupId)) {
     return false;
   }
   if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
     return false;
   }
   if ((this.description == null)
       ? (other.description != null)
       : !this.description.equals(other.description)) {
     return false;
   }
   if ((this.rule == null) ? (other.rule != null) : !this.rule.equals(other.rule)) {
     return false;
   }
   if (this.getNbUsers() != other.getNbUsers()) {
     return false;
   }
   return true;
 }