code: private boolean printMissingRules(CollectRulesVisitor visitor) {
          Set<String> missingConcepts = visitor.getMissingConcepts();
          if (!missingConcepts.isEmpty()) {
              logger.info("Missing concepts [" + missingConcepts.size() + "]");
              for (String missingConcept : missingConcepts) {
                  logger.warn(LOG_LINE_PREFIX + missingConcept);
              }
          }
          Set<String> missingConstraints = visitor.getMissingConstraints();
          if (!missingConstraints.isEmpty()) {
              logger.info("Missing constraints [" + missingConstraints.size() + "]");
              for (String missingConstraint : missingConstraints) {
                  logger.warn(LOG_LINE_PREFIX + missingConstraint);
              }
          }
          Set<String> missingGroups = visitor.getMissingGroups();
          if (!missingGroups.isEmpty()) {
              logger.info("Missing groups [" + missingGroups.size() + "]");
              for (String missingGroup : missingGroups) {
                  logger.warn(LOG_LINE_PREFIX + missingGroup);
              }
          }
          return missingConcepts.isEmpty() && missingConstraints.isEmpty() && missingGroups.isEmpty();
      }
docs: Prints all missing rule ids.
  
  @param visitor
  The visitor.