maybe move the various implementations to use a static `EnumSet` field and `EnumSet.contains`?