docs: function (yearAndRule, prevRule) {
          var year = yearAndRule[0]
            , rule = yearAndRule[1];
            // Assume that the rule applies to the year of the given date.
  
          var hms = rule[5];
          var effectiveDate;
  
          if (!EXACT_DATE_TIME[year])
            EXACT_DATE_TIME[year] = {};
  
          // Result for given parameters is already stored
          if (EXACT_DATE_TIME[year][rule])
            effectiveDate = EXACT_DATE_TIME[year][rule];
          else {
            //If we have a specific date, use that!
            if (!isNaN(rule[4])) {
              effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4], hms[1], hms[2], hms[3], 0));
            }
            //Let's hunt for the date.
            else {
              var targetDay
                , operator;
              //Example: `lastThu`
              if (rule[4].substr(0, 4) === "last") {
                // Start at the last day of the month and work backward.
                effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]] + 1, 1, hms[1] - 24, hms[2], hms[3], 0));
                targetDay = SHORT_DAYS[rule[4].substr(4, 3)];
                operator = "<=";
              }
              //Example: `Sun>=15`
              else {
                //Start at the specified date.
                effectiveDate = new Date(Date.UTC(year, SHORT_MONTHS[rule[3]], rule[4].substr(5), hms[1], hms[2], hms[3], 0));
                targetDay = SHORT_DAYS[rule[4].substr(0, 3)];
                operator = rule[4].substr(3, 2);
              }
              var ourDay = effectiveDate.getUTCDay();
              //Go forwards.
              if (operator === ">=") {
                effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay + ((targetDay < ourDay) ? 7 : 0)));
              }
              //Go backwards.  Looking for the last of a certain day, or operator is "<=" (less likely).
              else {
                effectiveDate.setUTCDate(effectiveDate.getUTCDate() + (targetDay - ourDay - ((targetDay > ourDay) ? 7 : 0)));
              }
            }
            EXACT_DATE_TIME[year][rule] = effectiveDate;
          }
  
  
          //If previous rule is given, correct for the fact that the starting time of the current
          // rule may be specified in local time.
          if (prevRule) {
            effectiveDate = convertDateToUTC(effectiveDate, hms[4], prevRule);
          }
          return effectiveDate;
        }