class AntiCalendarCostAssignmentPolicy extends UnitCostAssignmentPolicy {

    private static final long serialVersionUID = 3L;

    public static String CALENDARISH =
            "(?i)(calendar)|(year)|(month)|(day)|(date)|(viewcal)" +
            "|(\\D19\\d\\d\\D)|(\\D20\\d\\d\\D)|(event)|(yr=)" +
            "|(calendrier)|(jour)";
    
    /* (non-Javadoc)
     * @see org.archive.crawler.frontier.CostAssignmentPolicy#costOf(org.archive.crawler.datamodel.CrawlURI)
     */
    public int costOf(CrawlURI curi) {<FILL_FUNCTION_BODY>}
}

        int cost = super.costOf(curi);
        Matcher m = TextUtils.getMatcher(CALENDARISH, curi.toString());
        if (m.find()) {
            cost++;
            // TODO: consider if multiple occurrences should cost more
        }
        TextUtils.recycleMatcher(m);
        return cost;
    
<methods>public non-sealed void <init>() ,public int costOf(org.archive.modules.CrawlURI) <variables>private static final long serialVersionUID