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 || (d == 2 && w == Monday)) && m == January)
38
39 || ((d >= 6 && d <= 12) && w == Monday && m == January)
40
41 || ((d >= 19 && d <= 25) && w == Monday && m == March)
42
43 || (dd == em - 4)
44
45 || (dd == em - 3)
46
47 || (d == 1 && m == May)
48
49 || (dd == em + 42)
50
51 || (dd == em + 63)
52
53 || (dd == em + 70)
54
55 || (((d >= 29 && m == June) || (d <= 5 && m == July)) && w == Monday)
56
57 || (d == 20 && m == July)
58
59 || (d == 7 && m == August)
60
61 || ((d >= 15 && d <= 21) && w == Monday && m == August)
62
63 || ((d >= 12 && d <= 18) && w == Monday && m == October)
64
65 || ((d >= 1 && d <= 7) && w == Monday && m == November)
66
67 || ((d >= 12 && d <= 18) && w == Monday && m == November)
68
69 || (d == 8 && m == December)
70
71 || (d == 25 && m == December))
72 return false;
73 return true;
74}