public boolean overlapOrMeet(Temporal temporal) {
		if (null == temporal) return false;
		if (this == temporal || !hasTemporalInfo()) return true;
		if (isTimeInstance()) {
			if (temporal.isTimeInstance()) return startTime == temporal.startTime;
			else {
				if (startTime < temporal.startTime || temporal.endTime < startTime) return false;
			}
		} else {
			if (startTime > temporal.endTime || endTime < temporal.startTime) return false;
		}
		return true;
	}