Should almost always be subclassed, but for some simple situations it may be
used directly. Note that you will not be able to use unique type-based functionality
like LabeledEnumResolver.getLabeledEnumSet(type) in this case.