void addRule(int startYear,int endYear,int month,int dayOfMonthIndicator,int dayOfWeek,LocalTime time,boolean timeEndOfDay,TimeDefinition timeDefinition,int savingAmountSecs){
  if (fixedSavingAmountSecs != null) {
    throw new IllegalStateException("Window has a fixed DST saving, so cannot have DST rules");
  }
  if (ruleList.size() >= 2000) {
    throw new IllegalStateException("Window has reached the maximum number of allowed rules");
  }
  boolean lastRule=false;
  if (endYear == YEAR_MAX_VALUE) {
    lastRule=true;
    endYear=startYear;
  }
  int year=startYear;
  while (year <= endYear) {
    TZRule rule=new TZRule(year,month,dayOfMonthIndicator,dayOfWeek,time,timeEndOfDay,timeDefinition,savingAmountSecs);
    if (lastRule) {
      lastRuleList.add(rule);
    }
 else {
      ruleList.add(rule);
    }
    maxLastRuleStartYear=Math.max(startYear,maxLastRuleStartYear);
    year++;
  }
}

void addRule ( int startYear , int endYear , int month , int dayOfMonthIndicator , int dayOfWeek , LocalTime time , boolean timeEndOfDay , TimeDefinition timeDefinition , int savingAmountSecs ) { if ( fixedSavingAmountSecs != null ) { throw new IllegalStateException ( "Window has a fixed DST saving, so cannot have DST rules" ) ; } if ( ruleList . size ( ) >= 2000 ) { throw new IllegalStateException ( "Window has reached the maximum number of allowed rules" ) ; } boolean lastRule = false ; if ( endYear == YEAR_MAX_VALUE ) { lastRule = true ; endYear = startYear ; } int year = startYear ; while ( year <= endYear ) { TZRule rule = new TZRule ( year , month , dayOfMonthIndicator , dayOfWeek , time , timeEndOfDay , timeDefinition , savingAmountSecs ) ; if ( lastRule ) { lastRuleList . add ( rule ) ; } else { ruleList . add ( rule ) ; } maxLastRuleStartYear = Math . max ( startYear , maxLastRuleStartYear ) ; year ++ ; } }
adds a rule to the current window .
