calendar.add(Calendar.WEEK_OF_YEAR, -1);
	private long[][] getRefactoringRootStructure(final long stamp) {		if (fRefactoringRoots == null) {			final long time= System.currentTimeMillis();			final Calendar calendar= Calendar.getInstance();			calendar.setTimeInMillis(time);			calendar.set(Calendar.HOUR_OF_DAY, 0);			calendar.set(Calendar.MINUTE, 0);			calendar.set(Calendar.SECOND, 0);			calendar.set(Calendar.MILLISECOND, 0);			final int zoneOffset= calendar.get(Calendar.ZONE_OFFSET);			final int dstOffset= calendar.get(Calendar.DST_OFFSET);			int count= 0;			final long[] thresholds= new long[32];			final int[] kinds= new int[32];			thresholds[count]= calendar.getTimeInMillis();			kinds[count]= RefactoringHistoryNode.TODAY;			count++;			calendar.add(Calendar.DATE, -1);			thresholds[count]= calendar.getTimeInMillis();			kinds[count]= RefactoringHistoryNode.YESTERDAY;			count++;			final int day= calendar.get(Calendar.DAY_OF_WEEK);			if (day != Calendar.SUNDAY) {				calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);				thresholds[count]= calendar.getTimeInMillis();				kinds[count]= RefactoringHistoryNode.THIS_WEEK;				count++;			}			calendar.add(Calendar.WEEK_OF_YEAR, -1);			calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);			thresholds[count]= calendar.getTimeInMillis();			kinds[count]= RefactoringHistoryNode.LAST_WEEK;			count++;			final int week= calendar.get(Calendar.WEEK_OF_MONTH);			if (week != 1) {				calendar.setTimeInMillis(time);				calendar.set(Calendar.HOUR_OF_DAY, 0);				calendar.set(Calendar.MINUTE, 0);				calendar.set(Calendar.SECOND, 0);				calendar.set(Calendar.MILLISECOND, 0);				calendar.set(Calendar.DAY_OF_MONTH, 1);				thresholds[count]= calendar.getTimeInMillis();				kinds[count]= RefactoringHistoryNode.THIS_MONTH;				count++;			}			calendar.add(Calendar.MONTH, -1);			calendar.set(Calendar.DAY_OF_MONTH, 1);			thresholds[count]= calendar.getTimeInMillis();			kinds[count]= RefactoringHistoryNode.LAST_MONTH;			count++;			final int month= calendar.get(Calendar.MONTH);			if (month != 0) {				calendar.set(Calendar.MONTH, 0);				calendar.set(Calendar.DAY_OF_MONTH, 1);				thresholds[count]= calendar.getTimeInMillis();				kinds[count]= RefactoringHistoryNode.YEAR;				count++;			}			if (stamp > 0) {				final long localized= stamp + zoneOffset + dstOffset;				calendar.set(Calendar.MONTH, 0);				calendar.set(Calendar.DAY_OF_MONTH, 1);				do {					calendar.add(Calendar.YEAR, -1);					thresholds[count]= calendar.getTimeInMillis();					kinds[count]= RefactoringHistoryNode.YEAR;					count++;				} while (calendar.getTimeInMillis() > localized);			}			final long[][] result= new long[count - 1][2];			for (int index= 0; index < count - 1; index++) {				result[index][0]= thresholds[index];				result[index][1]= kinds[index];			}			fRefactoringRoots= result;		}		return fRefactoringRoots;	}