docs: private static Duration parseDuration(String input) {
          String[] parts = ConverterUtil.splitNumericAndChar(input);
          String numberString = parts[0];
          String originalUnitString = parts[1];
          String unitString = originalUnitString;
  
          if (numberString.length() == 0) {
              throw new IllegalArgumentException(String.format("No number in duration value '%s'", input));
          }
  
          if (unitString.length() > 2 && !unitString.endsWith("s")) {
              unitString = unitString + "s";
          }
  
          ChronoUnit units;
          // note that this is deliberately case-sensitive
          switch (unitString) {
              case "ns":
              case "nanos":
              case "nanoseconds":
                  units = ChronoUnit.NANOS;
                  break;
              case "us":
              case "µs":
              case "micros":
              case "microseconds":
                  units = ChronoUnit.MICROS;
                  break;
              case "":
              case "ms":
              case "millis":
              case "milliseconds":
                  units = ChronoUnit.MILLIS;
                  break;
              case "s":
              case "seconds":
                  units = ChronoUnit.SECONDS;
                  break;
              case "m":
              case "minutes":
                  units = ChronoUnit.MINUTES;
                  break;
              case "h":
              case "hours":
                  units = ChronoUnit.HOURS;
                  break;
              case "d":
              case "days":
                  units = ChronoUnit.DAYS;
                  break;
              default:
                  throw new IllegalArgumentException(
                          String.format("Could not parse time unit '%s' (try ns, us, ms, s, m, h, d)", originalUnitString));
          }
  
          return Duration.of(Long.parseLong(numberString), units);
      }