code: public List<List<Partition<CaptureSearchResult>>> getCaptureCalendar() {
  		if (month < 0 || month > 11)
  			throw new IllegalStateException("invalid month");
  		Partition<Partition<CaptureSearchResult>> curMonth = monthsByDay.get(month);
  		List<Partition<CaptureSearchResult>> monthDays = curMonth.list();
  
  		Calendar cal = Calendar.getInstance(calendarTimeZone);
  		cal.setTime(curMonth.getStart());
  		// DAY_OF_WEEK field has 1 for SUNDAY. Hence this makes week start Sunday.
  		int skipDays = cal.get(Calendar.DAY_OF_WEEK) - 1;
  
  		List<List<Partition<CaptureSearchResult>>> weeks = new ArrayList<List<Partition<CaptureSearchResult>>>();
  		List<Partition<CaptureSearchResult>> week = new ArrayList<Partition<CaptureSearchResult>>(7);
  		for (int i = 0; i < skipDays; i++) {
  			week.add(null);
  		}
  		for (Partition<CaptureSearchResult> p : monthDays) {
  			if (week == null)
  				week = new ArrayList<Partition<CaptureSearchResult>>(7);
  			week.add(p);
  			if (week.size() == 7) {
  				weeks.add(week);
  				week = null;
  			}
  		}
  		if (week != null) {
  			while (week.size() < 7)
  				week.add(null);
  			weeks.add(week);
  		}
  		return weeks;
  	}
docs: return {@code CaptureSearchResult} partitions for the month grouped
  by week.
  Call this method after designating desired month with {@link #setMonth(int)}.
  Each week group has exactly seven elements, where out-of-month slots are
  {@code null}.
  @return Weekly list of {@code Partition}s
  @exception IllegalStateException if {@code month} is not in 0..11 range.