DateTime startMonth = new DateTime(c.monthOfYear().roundFloor(interval.getStartMillis()));
DateTime endMonth = new DateTime(c.monthOfYear().roundFloor(end.plusMonths(1).getMillis()));
int nMonths = Months.monthsBetween(startMonth, endMonth).getMonths();
DateTime cursor = new DateTime(c.year().roundFloor(interval.getStartMillis()));
List<long[]> yearMonths = new ArrayList<long[]>();
DateTime endYear = new DateTime(c.year().roundCeiling(end.getMillis()));
while (cursor.isBefore(endYear)) {
long[] monthCounts = monthCountsByYear.get(cursor.getYear());
if (monthCounts == null) {
monthCounts = new long[12];