docs: private static String groupedKeyName(String key, Double baseRangeSize,
        Double baseRangeBase) {
      final double precision = 0.000001;
      if (baseRangeSize == null || baseRangeSize <= 0) {
        return key;
      } else {
        Double doubleKey;
        Double doubleBase;
        Double doubleNumber;
        Double doubleStart;
        Double doubleEnd;
        try {
          doubleKey = Double.parseDouble(key);
          doubleBase = baseRangeBase != null ? baseRangeBase : 0;
          doubleNumber = Math.floor((doubleKey - doubleBase) / baseRangeSize);
          doubleStart = doubleBase + doubleNumber * baseRangeSize;
          doubleEnd = doubleStart + baseRangeSize;
        } catch (NumberFormatException e) {
          return key;
        }
        // integer
        if (Math.abs(baseRangeSize - Math.floor(baseRangeSize)) < precision
            && Math.abs(doubleBase - Math.floor(doubleBase)) < precision) {
          try {
            if (baseRangeSize > 1) {
              return String.format("%.0f", doubleStart) + "-"
                  + String.format("%.0f", doubleEnd - 1);
            } else {
              return String.format("%.0f", doubleStart);
            }
          } catch (NumberFormatException e) {
            return key;
          }
        } else {
          return "[" + doubleStart + "," + doubleEnd + ")";
        }
      }
    }