ChoiceSettings now expect a subtype to enforce. CommandLineSource now handles invalid choices better.