method BindingBuilder.asRequired injects an hardcoded validator that compare actual value with the given “empty value” from method getEmptyValue().
I think, it could be more flexible to query the “isEmpty” method instead: in a CustomField, empty value could be more complicated, i.e. can be both “null” as “list with no values”.
For validation of the current value, isEmpty() would indeed be more flexible. However, that approach cannot be used in validation before the field value is set, such as in the middle of a validation and conversion chain. I’m not quite sure how much of an issue that would be for Binder, if the asRequired() is in the validation/conversion chain closer to the field than any converters.