return other.getType() == Type.DATE ? new DateValue(ncal, tzOffset) : new DateTimeValue(ncal, tzOffset);
if(other.getType() == Type.DATE) return new DateValue(ncal, tzOffset); else new DateTimeValue(ncal, tzOffset);
	public ComputableValue plus(ComputableValue other) throws XPathException {		switch (other.getType()) {			case Type.YEAR_MONTH_DURATION :				return new YearMonthDurationValue(getValue() + ((YearMonthDurationValue) other).getValue());			case Type.DATE :			case Type.DATE_TIME:				int tzOffset = ((AbstractDateTimeValue) other).tzOffset;				GregorianCalendar ncal = (GregorianCalendar) ((AbstractDateTimeValue) other).calendar.clone();				ncal.add(Calendar.MONTH, getValue());				return other.getType() == Type.DATE ? new DateValue(ncal, tzOffset) : new DateTimeValue(ncal, tzOffset);			default:				throw new XPathException(					"Operand to plus should be of type xdt:yearMonthDuration, xs:date, "						+ "or xs:dateTime; got: "						+ Type.getTypeName(other.getType()));		}	}