code: public String transform(String string) {
  
      if ((string == null) || (string.length() == 0)) {
        return string;
      }
      String lower = string.toLowerCase();
      for (TransformerRule rule : getRules()) {
        String singular = rule.transform(string, lower);
        if (singular != null) {
          return singular;
        }
      }
      return string;
    }
docs: This implementation processes the {@link #getRules() rules} in the order of occurrence. If a rule matches
  (does NOT {@link TransformerRule#transform(String, String) return} {@code null} ), that result is taken
  as result and no further rule is invoked.
  
  @param string the text to transform.
  @return the transformed text.