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