In fact, is it ever possible for rollupPeriod to be null (or builder. rollupWindowSize to be null)? The only way I think is if some package-private code sets the field directly (yuck!). How about a rollupPeriod of `0` means not to bother with the rolling, and to always forbid null - makes the code simpler and less error prone.