30 {
31 Weekday w = date.weekday();
32 Day d = date.dayOfMonth(), dd = date.dayOfYear();
33 Month m = date.month();
34 Year y = date.year();
35 Day em = easterMonday(y);
36 if (isWeekend(w)
37
38 || ((d == 1 || (d == 2 && w == Monday)) && m == January)
39
40 || (d == 9 && m == April)
41
42 || (dd == em - 4)
43
44 || (dd == em - 3)
45
46 || (d == 1 && m == May)
47
48 || (d == 12 && m == June)
49
50 || (d == 21 && m == August)
51
52 || (d >= 25 && w == Monday && m == August)
53
54 || (d == 1 && m == November)
55
56 || (d == 30 && m == November)
57
58 || ((d == 25 || (d == 27 && (w == Monday || w == Tuesday))) && m == December)
59
60 || ((d == 30 && m == December) || (d == 2 && m == January && w == Tuesday))
61
62 || (d == 31 && m == December))
63 return false;
64 return true;
65}