This will require us to special-case an empty collection everywhere, which I think will make the code confusing and probably error prone during maintenance. I think it'd be nice to modify the GranularitySpec interface somehow.

Maybe it could return an Optional<SortedSet<Interval>> from bucketIntervals?