32 {
33
34 Weekday w = date.weekday();
35 Day d = date.dayOfMonth();
36 Month m = date.month();
37 Year y = date.year();
38
39 Day dd = date.dayOfYear();
40 Day em = easterMonday(y);
41
42 if (isWeekend(w)
43
44 || ((d == 1 || (d == 2 && w == Monday)) && m == January)
45
46 || (y >= 1998 && (d >= 15 && d <= 21) && w == Monday && m == January)
47
48 || ((d >= 15 && d <= 21) && w == Monday && m == February)
49
50 || (dd == em - 3)
51
52 || (d >= 25 && w == Monday && m == May)
53
54 || ((d == 4 || (d == 5 && w == Monday) || (d == 3 && w == Friday)) && m == July)
55
56 || (d <= 7 && w == Monday && m == September)
57
58 || ((d >= 22 && d <= 28) && w == Thursday && m == November)
59
60 || ((d == 25 || (d == 26 && w == Monday) || (d == 24 && w == Friday)) && m == December))
61 return false;
62
63 return true;
64}