### Question:
SnakeCaseNameMapper implements NameMapper { @Override public String mapMemberName(String rawName) { if (rawName == null || rawName.length() == 0 || rawName.equals("_")) return rawName; StringBuilder result = new StringBuilder(); boolean prev_ = false; char prev_c = rawName.charAt(0); for (int i = 0; i < rawName.length(); i++) { char c = rawName.charAt(i); if (i == 0 && c == '_') continue; if (Character.isUpperCase(c)) { if (!prev_ && prev_c != '_' && i > 0 && !Character.isUpperCase(prev_c)) { result.append("_"); prev_ = true; } } else { prev_ = false; } prev_c = c; result.append(Character.toLowerCase(c)); } return result.toString(); }  @Override String mapMemberName(String rawName);  }### Answer:
@Test @DisplayName("Checking snake case mapping with standard names") void checkSnakeMapping() { testee.mapMemberName("$_a"); standardTest.forEach( (x,y) -> assertEquals( y, testee.mapMemberName(x), "For '"+x+"' Expected '" + y +"' got '" + testee.mapMemberName(x) ) ); }
@Test @DisplayName("Checking jackson mapping with null") void checkJacksonMappingWithNull() { assertNull(testee.mapMemberName(null)); }