TimeRange upTo(Time end) { if (start >= end) { throw DateTimeError("End can't be early than Start"); } return TimeRange(start, end); }