public static Collection<Temporal> consolidateTemporalSegments(Collection<Temporal> temporals) {
		if (null == temporals || temporals.size() < 2) return temporals;

		Set<Temporal> origTemporals = new TreeSet<Temporal>(temporals);
		temporals.clear();

		if (origTemporals.contains(PERSISTENT_TEMPORAL)) {
			temporals.add(PERSISTENT_TEMPORAL.clone());
			return temporals;
		}

		Iterator<Temporal> it = origTemporals.iterator();
		Temporal lastTemporal = it.next();
		Temporal temporal = null;

		try {
			while ((temporal = it.next()) != null) {
				if (lastTemporal.overlapOrMeet(temporal)) {
					lastTemporal = lastTemporal.join(temporal);
				} else {
					temporals.add(lastTemporal);
					lastTemporal = temporal;
				}
			}
		} catch (Exception e) {
		}

		temporals.add(lastTemporal);

		return temporals;
	}