Type Disjunction (and type sets) in scala