code: private static RuleList parseRuleChain(String description)
              throws ParseException {
          RuleList result = new RuleList();
          // remove trailing ;
          if (description.endsWith(";")) {
              description = description.substring(0,description.length()-1);
          }
          String[] rules = SEMI_SEPARATED.split(description);
          for (int i = 0; i < rules.length; ++i) {
              Rule rule = parseRule(rules[i].trim());
              result.hasExplicitBoundingInfo |= rule.integerSamples != null || rule.decimalSamples != null;
              result.addRule(rule);
          }
          return result.finish();
      }
docs: /*
  Syntax:
  rules : rule
  rule ';' rules