class ExpressionDecideRule extends PredicatedDecideRule {
    private static final long serialVersionUID = 1L;

    private static final Logger logger =
            Logger.getLogger(ExpressionDecideRule.class.getName());

    {
        setGroovyExpression("");
    }
    public void setGroovyExpression(String groovyExpression) {
        kp.put("groovyExpression", groovyExpression);
    }
    public String getGroovyExpression() {
        return (String) kp.get("groovyExpression");
    }

    protected ConcurrentHashMap<String,Template> groovyTemplates = new ConcurrentHashMap<String, Template>();
    protected Template groovyTemplate() {
        Template groovyTemplate = groovyTemplates.get(getGroovyExpression());

        if (groovyTemplate == null) {
            try {
                groovyTemplate = new SimpleTemplateEngine().createTemplate("${" + getGroovyExpression() + "}");
                groovyTemplates.put(getGroovyExpression(), groovyTemplate);
            } catch (Exception e) {
                logger.log(Level.SEVERE, "problem with groovy expression " + getGroovyExpression(), e);
            }
        }

        return groovyTemplate;
    }

    @Override
    protected boolean evaluate(CrawlURI curi) {<FILL_FUNCTION_BODY>}
}

        HashMap<String, Object> binding = new HashMap<String, Object>();
        binding.put("curi", curi);
        return String.valueOf(true).equals(groovyTemplate().make(binding).toString());
    
<methods>public void <init>() ,public org.archive.modules.deciderules.DecideResult getDecision() ,public org.archive.modules.deciderules.DecideResult onlyDecision(org.archive.modules.CrawlURI) ,public void setDecision(org.archive.modules.deciderules.DecideResult) <variables>private static final long serialVersionUID