TimeDomain contextDomain = context.getTimeDomain();
if (beginExpr == null) {
return new Range(contextDomain);
} else {
// be more permissive with context and fix ranges invalidated by conversion
TimeIndex begin = beginExpr.getDate(context);
TimeIndex end = endExpr.getDate(context);
if (begin == null || end == null) // (consequence of empty context range when context needed)
return new Range(contextDomain);
else if (begin.compareTo(end) > 0 && (beginExpr.needContext() || endExpr.needContext()))
return new Range(contextDomain);
else {