Add a CompositeDomain class, where each instance either contains a BoundedSet or a StridedInterval, used to delegate its operations.
It should also contain logic to switch from the BoundedSet representation to the StridedInterval, when this is sensible.