Implemented all but flush, now testing/fixing.
I misunderstood Calendar.after and Calendar.before.  They work on millisecond comparison, whereas I assumed it would be on calendar-date comparison.  Found it using my unit tests and fixed!
All tests passed!  Just flush implementation to go...