docs: protected void processDigits(List<Span> contextTokens, char compare, HashMap rule, int matchBegin, int currentPosition,
                                   LinkedHashMap<String, ConTextSpan> matches) {
          mt = pdigit.matcher(contextTokens.get(currentPosition).text);
          if (mt.find()) {
              double thisDigit;
  //			prevent length over limit
              if (mt.group(1).length() < 4) {
                  String a = mt.group(1);
                  thisDigit = Double.parseDouble(mt.group(1));
              } else {
                  thisDigit = 1000;
              }
              Set<String> numbers = rule.keySet();
              for (String num : numbers) {
                  double ruleDigit = Double.parseDouble(num);
                  if ((compare == '>' && thisDigit > ruleDigit) || (compare == '<' && thisDigit < ruleDigit)) {
                      if (mt.group(2) == null) {
                          // if this token is a number
                          processRules(contextTokens, (HashMap) rule.get(num), matchBegin, currentPosition + 1, matches);
                      } else {
                          // thisToken is like "30-days"
                          HashMap ruletmp = (HashMap) rule.get(ruleDigit + "");
                          String subtoken = mt.group(2).substring(1);
                          if (ruletmp.containsKey(subtoken)) {
                              processRules(contextTokens, (HashMap) ruletmp.get(subtoken), matchBegin, currentPosition + 1, matches);
                          }
                      }
                  }
              }
          }
      }