sclass DateStructures { asclass SomeDate {} asclass SomeWeek > SomeDate {} // years srecord Year(int year) > SomeDate {} srecord CurrentYearPlus(int nYears) > SomeDate {} // months srecord Month(int month, Year year) > SomeDate { Month(int month) { this(month, null); } } srecord CurrentMonthPlus(int nMonths) > SomeDate {} // weeks srecord Week(int week, Year year) > SomeWeek {} srecord CurrentWeekPlus(int nWeeks) > SomeWeek {} // days srecord Day(int day, Month month) > SomeDate {} srecord TodayPlus(int nDays) > SomeDate {} // weekdays srecord Weekday(int weekday, SomeWeek week) > SomeDate { // weekday is in Java count (1=Sunday) Weekday(int weekday) { this.weekday = weekday; } } // hours srecord Hour(int hour, Bool isPM, Day day) > SomeDate { Hour(int hour, Bool isPM) { this(hour, isPM, null); } } srecord CurrentHourPlus(int nHours) > SomeDate {} // minutes srecord Minute(int minute, Hour hour) > SomeDate {} srecord CurrentMinutePlus(int nMinutes) > SomeDate {} // seconds srecord Second(int second, Minute minute) > SomeDate {} }