Из Javadoc Calendar.before(Object when)
:
Возвращает, представляет ли этот Календарь время до времени, представленного указанным объектом. Этот метод эквивалентен:
compareTo(when) < 0
тогда и только тогда, когда это экземпляр класса Calendar. В противном случае метод возвращает false.
Почему он принимает Объект, если когда кто-то передает что-то, что не является экземпляром Календаря, он возвращает ложь? Почему бы просто не принять экземпляр календаря? Это заставляло меня в течение некоторого времени наблюдать за неправильными результатами в функционале.