Looks like logic in forFirstNameRule() of DefaultAccessorNamingStrategy.FirstCharBasedValidator is wrong: it should return null (for "no need for validator) if both are true (both lower-case and non-letter allowed as the first character) -- but currently checks the reverse (both are false).