in grails-forge-core/src/main/java/org/grails/forge/util/NameUtils.java [678:703]
static String convertValidPropertyMethodSuffix(String suffix) {
if (suffix.length() == 0) {
return null;
}
// We assume all characters are Character.isJavaIdentifierPart, but the first one may not be a valid
// starting character.
if (!Character.isJavaIdentifierStart(suffix.charAt(0))) {
return null;
}
if (suffix.length() == 1) {
return Character.isUpperCase(suffix.charAt(0)) ? suffix.toLowerCase() : null;
}
if (Character.isUpperCase(suffix.charAt(1))) {
// "aProperty", "AProperty"
return suffix;
}
if (Character.isUpperCase(suffix.charAt(0))) {
return Character.toLowerCase(suffix.charAt(0)) + suffix.substring(1);
}
if ('_' == suffix.charAt(0)) {
return suffix;
}
return null;
}