if (other.getType() == Type.TIME) { TimeValue otherTime = (TimeValue) other; long delta = calendar.getTimeInMillis() - otherTime.calendar.getTimeInMillis(); return new DayTimeDurationValue(delta); } else if (other.getType() == Type.DAY_TIME_DURATION) { long newMillis = calendar.getTimeInMillis() - ((DayTimeDurationValue) other).getValueInMilliseconds(); return new TimeValue(newMillis, tzOffset); } else throw new XPathException( "Operand to minus should be of type xs:time or xdt:dayTimeDuration; got: " + Type.getTypeName(other.getType()));
switch(other.getType()) { case Type.TIME: return new DayTimeDurationValue(calendar.getTimeInMillis() - ((TimeValue) other).calendar.getTimeInMillis()); case Type.DAY_TIME_DURATION: return ((DayTimeDurationValue) other).negate().plus(this); default: throw new XPathException( "Operand to minus should be of type xs:time or xdt:dayTimeDuration; got: " + Type.getTypeName(other.getType())); }
	public ComputableValue minus(ComputableValue other) throws XPathException {		if (other.getType() == Type.TIME) {			TimeValue otherTime = (TimeValue) other;			long delta =				calendar.getTimeInMillis() - otherTime.calendar.getTimeInMillis();			return new DayTimeDurationValue(delta);		} else if (other.getType() == Type.DAY_TIME_DURATION) {			long newMillis =				calendar.getTimeInMillis()					- ((DayTimeDurationValue) other).getValueInMilliseconds();			return new TimeValue(newMillis, tzOffset);		} else			throw new XPathException(				"Operand to minus should be of type xs:time or xdt:dayTimeDuration; got: "					+ Type.getTypeName(other.getType()));	}