String (@NotNull String name, @NotNull VariableKind variableKind) { String prefix = getPrefixByVariableKind(variableKind); String suffix = getSuffixByVariableKind(variableKind); boolean doDecapitalize = false; int pLength = prefix.length(); if (pLength > 0 && name.startsWith(prefix) && name.length() > pLength && // check it's not just a long camel word that happens to begin with the specified prefix (!Character.isLetter(prefix.charAt(pLength - 1)) || Character.isUpperCase(name.charAt(pLength)))) { name = name.substring(pLength); doDecapitalize = true; } if (name.endsWith(suffix) && name.length() > suffix.length()) { name = name.substring(0, name.length() - suffix.length()); doDecapitalize = true; } if (doDecapitalize) { name = Introspector.decapitalize(name); } return name; }