final sclass LongRange { long start, end; *() {} *(long *start, long *end) {} public bool equals(O o) { if (o cast LongRange) ret start == o.start && end == o.end; false; } public int hashCode() { ret boostHashCombine(hashOfLong(start), hashOfLong(end)); } long length() { ret end-start; } sS _fieldOrder = "start end"; toString { ret "[" + start + ";" + end + "]"; } }