docs: public static void printTimeAverage(final Collection pTimeDifferences, final PrintStream pPrintStream) {
  
      if (pPrintStream == null) {
        System.err.println(PRINTSTREAM_IS_NULL_ERROR_MESSAGE);
        return;
      }
      if (pTimeDifferences == null) {
        pPrintStream.println(TIMEDIFFERENCES_IS_NULL_ERROR_MESSAGE);
        return;
      }
      Object         o;
      TimeDifference timeDifference;
      Calendar       startCalendar      = null;
      Calendar       endCalendar        = null;
      Calendar       totalStartCalendar = null;
      Calendar       totalEndCalendar   = null;
      long           startCalendarMilliSeconds, endCalendarMilliSeconds;
      List           timeDifferenceList = new Vector();
      Iterator       i                  = pTimeDifferences.iterator();
  
      if (i.hasNext()) {
        o = i.next();
        if (!(o instanceof TimeDifference)) {
          pPrintStream.println(TIMEDIFFERENCES_WRONG_DATATYPE_ERROR_MESSAGE);
          return;
        }
        timeDifference            = (TimeDifference) o;
        startCalendar             = timeDifference.getStartCalendar();
        totalStartCalendar        = startCalendar;
        endCalendar               = timeDifference.getEndCalendar();
        startCalendarMilliSeconds = startCalendar.getTime().getTime();
        endCalendarMilliSeconds   = endCalendar.getTime().getTime();
        timeDifferenceList.add(new Long(endCalendarMilliSeconds - startCalendarMilliSeconds));
      }
      while (i.hasNext()) {
        o = i.next();
        if (!(o instanceof TimeDifference)) {
          pPrintStream.println(TIMEDIFFERENCES_WRONG_DATATYPE_ERROR_MESSAGE);
          return;
        }
        timeDifference            = (TimeDifference) o;
        startCalendar             = timeDifference.getStartCalendar();
        endCalendar               = timeDifference.getEndCalendar();
        startCalendarMilliSeconds = startCalendar.getTime().getTime();
        endCalendarMilliSeconds   = endCalendar.getTime().getTime();
        timeDifferenceList.add(new Long(endCalendarMilliSeconds - startCalendarMilliSeconds));
      }
      totalEndCalendar = endCalendar;
      int  numberOfElements = timeDifferenceList.size();
      long timeDifferenceElement;
      long timeDifferenceSum = 0;
  
      for (Iterator i2 = timeDifferenceList.iterator(); i2.hasNext(); ) {
        timeDifferenceElement = ((Long) i2.next()).longValue();
        timeDifferenceSum     += timeDifferenceElement;
      }
  
      // Total elapsed time
      String totalElapsedTime = buildTimeDifference(totalStartCalendar, totalEndCalendar);
  
      // Time average presentation format
      pPrintStream.println("Average time difference: " + timeDifferenceSum / numberOfElements + "ms (" + numberOfElements
                           + " elements, total elapsed time: " + totalElapsedTime + ")");
    }