public static String lowerUnderscoreToLowerCamelCase(String lowerUnderscore) {
    StringBuilder builder = new StringBuilder();
    int length = lowerUnderscore.length();

    int index;
    int fromIndex = 0;
    while ((index = lowerUnderscore.indexOf('_', fromIndex)) != -1) {
      builder.append(lowerUnderscore, fromIndex, index);

      if (length >= index + 1) {
        char symbol = lowerUnderscore.charAt(index + 1);
        if (symbol >= 'a' && symbol <= 'z') {
          builder.append(Character.toUpperCase(symbol));
          fromIndex = index + 2;
          continue;
        }
      }

      fromIndex = index + 1;
    }

    if (fromIndex < length) {
      builder.append(lowerUnderscore, fromIndex, length);
    }

    return builder.toString();
  }
@Test
  public void testLowerUnderscoreToLowerCamelCase() {
    assertEquals(StringUtils.lowerUnderscoreToLowerCamelCase("some_variable"), "someVariable");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_long_variable"), "someLongVariable");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_123variable"), "some123variable");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_variable123"), "someVariable123");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_variable123"), "someVariable123");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_123_variable"), "some123Variable");
    assertEquals(
        StringUtils.lowerUnderscoreToLowerCamelCase("some_variable_123"), "someVariable123");
  }