docs: public static Set<Integer> parseRange(String range) {
          if (range == null) {
              return Collections.emptySet();
          }
          Set<Integer> ret = new LinkedHashSet<>();
          StringTokenizer stringTokenizer = new StringTokenizer(range, String.format("%s%s", COMMA, DASH), true);
          Integer from = null;
          Integer to = null;
          boolean rangeStarted = false;
          while (stringTokenizer.hasMoreTokens()) {
              String token = stringTokenizer.nextToken();
              if (isValueDelimiter(token)) {
                  ret.addAll(fromToAsSet(from, to));
                  from = null;
                  to = null;
                  rangeStarted = false;
              } else if (isRangeDelimiter(token)) {
                  rangeStarted = true;
              } else {
                  String trimmedValue = token.trim();
                  if (!isPositiveInt(trimmedValue)) {
                      throw new IllegalArgumentException("Range values should be positive numbers.");
                  }
                  Integer parsedInteger = Integer.parseUnsignedInt(trimmedValue);
                  if (rangeStarted) {
                      to = parsedInteger;
                  } else {
                      from = parsedInteger;
                  }
              }
              if (from != null) {
                  ret.addAll(fromToAsSet(from, to));
              }
          }
  
          return ret;
      }