code: @SuppressWarnings("rawtypes")
      public org.grails.datastore.mapping.query.api.Criteria eq(String propertyName, Object propertyValue, Map params) {
          if (!validateSimpleExpression()) {
              throwRuntimeException(new IllegalArgumentException("Call to [eq] with propertyName [" +
                      propertyName + "] and value [" + propertyValue + "] not allowed here."));
          }
  
          propertyName = calculatePropertyName(propertyName);
          propertyValue = calculatePropertyValue(propertyValue);
          Criterion eq;
          if (propertyValue instanceof org.hibernate.criterion.DetachedCriteria) {
              eq = Property.forName(propertyName).eq((org.hibernate.criterion.DetachedCriteria) propertyValue);
          }
          else {
              eq =  Restrictions.eq(propertyName, propertyValue);
          }
          if (params != null && (eq instanceof SimpleExpression)) {
              Object ignoreCase = params.get("ignoreCase");
              if (ignoreCase instanceof Boolean && (Boolean)ignoreCase) {
                  eq = ((SimpleExpression)eq).ignoreCase();
              }
          }
          addToCriteria(eq);
          return this;
      }
docs: Creates an "equals" Criterion based on the specified property name and value.
  Supports case-insensitive search if the <code>params</code> map contains <code>true</code>
  under the 'ignoreCase' key.
  @param propertyName The property name
  @param propertyValue The property value
  @param params optional map with customization parameters; currently only 'ignoreCase' is supported.
  
  @return A Criterion instance