code: public void validate(final Mapper mapper, final List<MappedClass> classes) {
          final Set<ConstraintViolation> ve = new TreeSet<ConstraintViolation>(new Comparator<ConstraintViolation>() {
  
              @Override
              public int compare(final ConstraintViolation o1, final ConstraintViolation o2) {
                  return o1.getLevel().ordinal() > o2.getLevel().ordinal() ? -1 : 1;
              }
          });
  
          final List<ClassConstraint> rules = getConstraints();
          for (final MappedClass c : classes) {
              for (final ClassConstraint v : rules) {
                  v.check(mapper, c, ve);
              }
          }
  
          if (!ve.isEmpty()) {
              final ConstraintViolation worst = ve.iterator().next();
              final Level maxLevel = worst.getLevel();
              if (maxLevel.ordinal() >= Level.FATAL.ordinal()) {
                  throw new ConstraintViolationException(ve);
              }
  
              // sort by class to make it more readable
              final List<LogLine> l = new ArrayList<LogLine>();
              for (final ConstraintViolation v : ve) {
                  l.add(new LogLine(v));
              }
              sort(l);
  
              for (final LogLine line : l) {
                  line.log(LOG);
              }
          }
      }
docs: Validates a List of MappedClasses
  
  @param classes the MappedClasses to validate
  @param mapper the Mapper to use for validation