Make 'open' disjoint unions use class syntax; add ClassExpression with the disjoint union and domain-level lists.

The domain level list syntax is only one part of what is required for useful domain level lists - we are also going to need type constructors (with special syntax) and domain functions.
Dead code removal.