public static ImmutableList<String> splitToLowercaseTerms(String identifierName) {
    if (ONLY_UNDERSCORES.matcher(identifierName).matches()) {
      // Degenerate case of names which contain only underscore
      return ImmutableList.of(identifierName);
    }
    return TERM_SPLITTER
        .splitToStream(identifierName)
        .map(String::toLowerCase)
        .collect(toImmutableList());
  }
@Test
  public void splitToLowercaseTerms_findsSingleTerm_withOnlyUnderscore() {
    String identifierName = "_____";

    ImmutableList<String> terms = NamingConventions.splitToLowercaseTerms(identifierName);

    assertThat(terms).containsExactly("_____");
  }