enforce that enumerated bounds must list disjoint types
introduce ProducedType.isNothing()