### Question:
StringUtils { public static String underscore(final String word) { return underscoreWordsCache.get(word, wordToUnderscore -> { String result; String replacementPattern = "$1_$2"; result = pkgSeparatorPattern.matcher(wordToUnderscore).replaceAll("/"); result = dollarPattern.matcher(result).replaceAll("__"); result = capitalLetterPattern.matcher(result).replaceAll(replacementPattern); result = lowercasePattern.matcher(result).replaceAll(replacementPattern); result = result.replace('-', '_'); result = result.replace(' ', '_'); result = result.toLowerCase(Locale.ROOT); return result; }); }  static String underscore(final String word); static String dashize(String word); static String camelize(String word); static String camelize(final String inputWord, boolean lowercaseFirstLetter); static String escape(final String name, final Map<String, String> replacementMap,
                                final List<String> charactersToAllow, final String appendToReplacement); static final String NAME_CACHE_SIZE_PROPERTY; static final String NAME_CACHE_EXPIRY_PROPERTY; }### Answer:
@Test public void testUnderscore() { Assert.assertEquals(underscore("abcd"), "abcd"); Assert.assertEquals(underscore("abCd"), "ab_cd"); }