class CandidateScoper extends Scoper {
    @SuppressWarnings("unused")
    private static final long serialVersionUID = 1L;

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

    @Override
    protected ProcessResult innerProcessResult(CrawlURI curi) throws InterruptedException {<FILL_FUNCTION_BODY>}

    @Override
    protected boolean shouldProcess(CrawlURI uri) {
        return true;
    }

    @Override
    protected void innerProcess(CrawlURI uri) throws InterruptedException {
        assert false;
    }

}

        try {
            if (!isInScope(curi)) {
                // Scope rejected
                curi.setFetchStatus(FetchStatusCodes.S_OUT_OF_SCOPE);
                return ProcessResult.FINISH;
            }
        } catch (Exception e) {
            curi.setFetchStatus(FetchStatusCodes.S_RUNTIME_EXCEPTION);
            logger.log(Level.SEVERE, "problem scoping " + curi, e);
            return ProcessResult.FINISH;
        }
        return ProcessResult.PROCEED;
    
<methods>public void <init>() ,public boolean getLogToFile() ,public org.archive.crawler.reporting.CrawlerLoggerModule getLoggerModule() ,public org.archive.modules.deciderules.DecideRule getScope() ,public boolean isRunning() ,public void setLogToFile(boolean) ,public void setLoggerModule(org.archive.crawler.reporting.CrawlerLoggerModule) ,public void setScope(org.archive.modules.deciderules.DecideRule) ,public void start() ,public void stop() <variables>protected java.util.logging.Logger fileLogger,protected boolean isRunning,protected org.archive.crawler.reporting.CrawlerLoggerModule loggerModule,protected org.archive.modules.deciderules.DecideRule scope