public TimePeriod getBoundingTime(final Collection<ICollection> items) {
      TimePeriod res = null;

      Iterator<ICollection> iter = items.iterator();
      while (iter.hasNext()) {
        ICollection iCollection = (ICollection) iter.next();
        if (iCollection.isTemporal()) {
          IBaseTemporalCollection timeC = (IBaseTemporalCollection) iCollection;
          if (res == null) {
            res = new TimePeriod(timeC.start(), timeC.finish());
          } else {
            res.startTime = Math.max(res.startTime, timeC.start());
            res.endTime = Math.min(res.endTime, timeC.finish());
          }
        }
      }

      return res;
    }