docs: private static String toLowerUnderscoreFromCamel(final String value)
      {
          if (value.isEmpty())
          {
              return value;
          }
          final String s = toLowerFirstChar(value);
  
          // include some extra space for separators
          final StringBuilder out = new StringBuilder(s.length() + 4);
          int i = 0;
          int j = -1;
          while ((j = indexInUpperAlphaRange(s, ++j)) != -1)
          {
              final String word = s.substring(i, j).toLowerCase();
              out.append(word);
              if (!word.endsWith("_"))
              {
                  out.append("_");
              }
              i = j;
          }
  
          return (i == 0) ? s.toLowerCase() : out.append(s.substring(i).toLowerCase()).toString();
      }