docs: private static List<Integer> parseRange(String value, int step, ValueParser parser) {
  		final List<Integer> results = new ArrayList<>();
  		
  		// 全部匹配形式
  		if (value.length() <= 2) {
  			//根据步进的第一个数字确定起始时间，类似于 12/3则从12（秒、分等）开始
  			int minValue = parser.getMin();
  			if(false == isMatchAllStr(value)) {
  				minValue = Math.max(minValue, parser.parse(value));
  			}else {
  				//在全匹配模式下，如果步进不存在，表示步进为1
  				if(step < 1) {
  					step = 1;
  				}
  			}
  			if(step > 0) {
  				final int maxValue = parser.getMax();
  				if(minValue > maxValue) {
  					throw new CronException("Invalid value {} > {}", minValue, maxValue);
  				}
  				//有步进
  				for (int i = minValue; i <= maxValue; i+=step) {
  					results.add(i);
  				}
  			} else {
  				//固定时间
  				results.add(minValue);
  			}
  			return results;
  		}
  
  		//Range模式
  		List<String> parts = StrUtil.split(value, '-');
  		int size = parts.size();
  		if (size == 1) {// 普通值
  			final int v1 = parser.parse(value);
  			if(step > 0) {//类似 20/2的形式
  				NumberUtil.appendRange(v1, parser.getMax(), step, results);
  			}else {
  				results.add(v1);
  			}
  		} else if (size == 2) {// range值
  			final int v1 = parser.parse(parts.get(0));
  			final int v2 = parser.parse(parts.get(1));
  			if(step < 1) {
  				//在range模式下，如果步进不存在，表示步进为1
  				step = 1;
  			}
  			if (v1 < v2) {// 正常范围，例如：2-5
  				NumberUtil.appendRange(v1, v2, step, results);
  			} else if (v1 > v2) {// 逆向范围，反选模式，例如：5-2
  				NumberUtil.appendRange(v1, parser.getMax(), step, results);
  				NumberUtil.appendRange(parser.getMin(), v2, step, results);
  			} else {// v1 == v2，此时与单值模式一致
  				if(step > 0) {//类似 20/2的形式
  					NumberUtil.appendRange(v1, parser.getMax(), step, results);
  				}else {
  					results.add(v1);
  				}
  			}
  		} else {
  			throw new CronException("Invalid syntax of field: [{}]", value);
  		}
  		return results;
  	}