Given you are doing this seems like a StateValidationDecorator would be simple way to do and keep validation logic out of Descriptor::State. Could do that as a separate PR.