code: private LocalDate analyzeDates(final Family family) {
          if (family == null) {
              return null;
          }
          LocalDate earliestDate = null;
          final FamilyAnalysisVisitor visitor = new FamilyAnalysisVisitor();
          family.accept(visitor);
          for (final Attribute attribute : visitor.getTrimmedAttributes()) {
              basicOrderCheck(attribute);
              setSeenEvent(attribute);
              final LocalDate date = createLocalDate(attribute);
              earliestDate = minDate(earliestDate, date);
          }
          return earliestDate(visitor);
      }
docs: Analyze the family. Add any date order problems to the analysis.
  
  @param family the family to check
  @return the earliest date of an event in the family