public long next(long fromTime){
  if (getCurrentCount() == 0 || fromTime == 0 || fromTime == startDate.getTime()) {
    return first();
  }
  if (Debug.verboseOn()) {
    Debug.logVerbose("Date List Size: " + (rDateList == null ? 0 : rDateList.size()),module);
    Debug.logVerbose("Rule List Size: " + (rRulesList == null ? 0 : rRulesList.size()),module);
  }
  if (rDateList == null && rRulesList == null) {
    return 0;
  }
  long nextRuleTime=fromTime;
  boolean hasNext=true;
  Iterator<RecurrenceRule> rulesIterator=getRecurrenceRuleIterator();
  while (rulesIterator.hasNext()) {
    RecurrenceRule rule=rulesIterator.next();
    while (hasNext) {
      nextRuleTime=getNextTime(rule,nextRuleTime);
      if (nextRuleTime == 0 || isValid(nextRuleTime)) {
        hasNext=false;
      }
    }
  }
  return nextRuleTime;
}

public long next ( long fromTime ) { if ( getCurrentCount ( ) == 0 || fromTime == 0 || fromTime == startDate . getTime ( ) ) { return first ( ) ; } if ( Debug . verboseOn ( ) ) { Debug . logVerbose ( "Date List Size: " + ( rDateList == null ? 0 : rDateList . size ( ) ) , module ) ; Debug . logVerbose ( "Rule List Size: " + ( rRulesList == null ? 0 : rRulesList . size ( ) ) , module ) ; } if ( rDateList == null && rRulesList == null ) { return 0 ; } long nextRuleTime = fromTime ; boolean hasNext = true ; Iterator < RecurrenceRule > rulesIterator = getRecurrenceRuleIterator ( ) ; while ( rulesIterator . hasNext ( ) ) { RecurrenceRule rule = rulesIterator . next ( ) ; while ( hasNext ) { nextRuleTime = getNextTime ( rule , nextRuleTime ) ; if ( nextRuleTime == 0 || isValid ( nextRuleTime ) ) { hasNext = false ; } } } return nextRuleTime ; }
returns the next recurrence from the specified time .
