protected void buildExpression(String expression) throws ParseException {
    expressionParsed = true;

    try {

      if (seconds == null) seconds = new TreeSet();
      if (minutes == null) minutes = new TreeSet();
      if (hours == null) hours = new TreeSet();
      if (daysOfMonth == null) daysOfMonth = new TreeSet();
      if (months == null) months = new TreeSet();
      if (daysOfWeek == null) daysOfWeek = new TreeSet();
      if (years == null) years = new TreeSet();

      int exprOn = SECOND;

      String[] exprsTok = expression.split(" |\\t");

      for (int i = 0; i < exprsTok.length; i++) {
        if (exprOn > YEAR) {
          break;
        }
        String expr = exprsTok[i];
        String[] vtok = expr.split(",");
        for (int j = 0; j < vtok.length; j++) {
          String v = vtok[j];
          storeExpressionVals(0, v, exprOn);
        }
        exprOn++;
      }

      if (exprOn <= DAY_OF_WEEK)
        throw new ParseException(MSGS.cronUnexpectedEndOfExpression(), expression.length());

      if (exprOn <= YEAR) storeExpressionVals(0, "*", YEAR);

    } catch (ParseException pe) {
      throw pe;
    } catch (Exception e) {
      throw new ParseException(MSGS.cronIllegalExpressionFormat(e.toString()), 0);
    }
  }