code: static Predicate<DateValue> byMonthDayFilter(final int[] monthDays) {
  		return new Predicate<DateValue>() {
  			private static final long serialVersionUID = -1618039447294490037L;
  
  			public boolean apply(DateValue date) {
  				int nDays = TimeUtils.monthLength(date.year(), date.month());
  				for (int i = monthDays.length - 1; i >= 0; i--) {
  					int day = monthDays[i];
  					if (day < 0) {
  						day += nDays + 1;
  					}
  					if (day == date.day()) {
  						return true;
  					}
  				}
  				return false;
  			}
  		};
  	}
docs: Constructs a day filter based on a BYDAY rule.
  @param monthDays days of the month (values must be in range [-31,31])
  @return the filter