Did you think about using `EnumSet` here? I'm undecided. It'd be a bit more "idiomatic" for the representation of enum values, OTOH implementations e.g. couldn't return an unmodifiable set.