Does this start completely before other? Disjoint */
bool startsBeforeDisjoint(Interval other) { return a < other.a && b < other.a; }