srecord TimestampRange(Timestamp start, Timestamp end) { *(long start, long end) { this(Timestamp(start), Timestamp(end)); } Timestamp start() { ret start; } Timestamp end() { ret end; } selfType start aka startTime(Timestamp start) { this.start = start; this; } selfType end aka endTime(Timestamp end) { this.end = end; this; } bool complete() { ret start != null && end != null; } Duration duration() { ret !complete() ? null : end.minusAsDuration(start); } }