boolean done = false;
if (pointer == Pointer.PointerType.FUTURE) {
if (tick.isAmbiguous()) {
List<Calendar> futureDates = new LinkedList<Calendar>();
futureDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, tick.intValue()));
futureDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, halfDay + tick.intValue()));
futureDates.add(Time.cloneAndAdd(tomorrowMidnight, Calendar.SECOND, tick.intValue()));
for (Calendar futureDate : futureDates) {
if (futureDate.after(now) || futureDate.equals(now)) {
futureDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, tick.intValue()));
futureDates.add(Time.cloneAndAdd(tomorrowMidnight, Calendar.SECOND, tick.intValue()));
for (Calendar futureDate : futureDates) {
if (futureDate.after(now) || futureDate.equals(now)) {
if (tick.isAmbiguous()) {
List<Calendar> pastDates = new LinkedList<Calendar>();
pastDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, halfDay + tick.intValue()));
pastDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, tick.intValue()));
pastDates.add(Time.cloneAndAdd(yesterdayMidnight, Calendar.SECOND, tick.intValue() * 2));
for (Calendar pastDate : pastDates) {
if (pastDate.before(now) || pastDate.equals(now)) {
pastDates.add(Time.cloneAndAdd(midnight, Calendar.SECOND, tick.intValue()));
pastDates.add(Time.cloneAndAdd(yesterdayMidnight, Calendar.SECOND, tick.intValue()));
for (Calendar pastDate : pastDates) {
if (pastDate.before(now) || pastDate.equals(now)) {
int increment = (tick.isAmbiguous()) ? halfDay : fullDay;