validateValues method
Requires exact declared keys; admission never silently supplies defaults. Invalid values throw an ArgumentError, which verbs and imports report as a denial.
Implementation
void validateValues(Map<String, Object?> values) {
if (values.length != this.values.length ||
!values.keys.every(this.values.containsKey)) {
throw ArgumentError(
'$type values must contain exactly the declared fields',
);
}
for (final entry in this.values.entries) {
if (!entry.value.accepts(values[entry.key])) {
throw ArgumentError('Invalid $type value for ${entry.key}');
}
}
}