/// <summary>
        /// Crontab schedule
        /// </summary>
        /// <param name="expression">expression</param>
        private CrontabSchedule(string expression)
        {
            Debug.Assert(expression != null);

            var fields = expression.Split((char[])Separators, StringSplitOptions.RemoveEmptyEntries);

            if (fields.Length != 5)
            {
                throw new FormatException(string.Format(
                                              "'{0}' is not a valid crontab expression. It must contain at least 5 components of a schedule "
                                              + "(in the sequence of minutes, hours, days, months, days of week).",
                                              expression));
            }

            _minutes    = CrontabField.Minutes(fields[0]);
            _hours      = CrontabField.Hours(fields[1]);
            _days       = CrontabField.Days(fields[2]);
            _months     = CrontabField.Months(fields[3]);
            _daysOfWeek = CrontabField.DaysOfWeek(fields[4]);
        }