code: private void executeGroup(RuleSet ruleSet, Group group, Severity parentSeverity) throws RuleException {
          if (!executedGroups.contains(group)) {
              ruleVisitor.beforeGroup(group, getEffectiveSeverity(group, parentSeverity, parentSeverity));
              for (Map.Entry<String, Severity> conceptEntry : group.getConcepts().entrySet()) {
                  applyConcepts(ruleSet, conceptEntry.getKey(), parentSeverity, conceptEntry.getValue());
              }
              for (Map.Entry<String, Severity> groupEntry : group.getGroups().entrySet()) {
                  executeGroups(ruleSet, groupEntry.getKey(), parentSeverity, groupEntry.getValue());
              }
              Map<String, Severity> constraints = group.getConstraints();
              for (Map.Entry<String, Severity> constraintEntry : constraints.entrySet()) {
                  validateConstraints(ruleSet, constraintEntry.getKey(), parentSeverity, constraintEntry.getValue());
              }
              ruleVisitor.afterGroup(group);
              executedGroups.add(group);
          }
      }
docs: Executes the given group.
  
  @param ruleSet
  The rule set.
  @param group
  The group.
  @param parentSeverity
  The severity.