Request newReq; HttpUrl origUrl; Response resp; HttpUrl url;  _model.setStatus("Started"); _model.setStopping(false); _runThread = Thread.currentThread();   _fetcherQueue = new FetcherQueue(getPluginName(), this, 10, 0);   _model.setRunning(true); while (!_model.isStopping()) { origUrl = _model.dequeueURL(); if (origUrl == null) { continue; } String[] exts; if (origUrl.getPath().endsWith("/")) { exts = _model.getDirectoryExtensions(); if (origUrl.getPath().length() < 2) { continue; } } else { exts = _model.getFileExtensions(); }  for (int ix = 0; ix < exts.length; ix++) { _model.incrementExtensionsTested(origUrl); newReq = newRequest(origUrl, exts[ix]); _fetcherQueue.submit(newReq); } }  _fetcherQueue.clearRequestQueue(); _model.setRunning(false); _runThread = null; _model.setStatus("Stopped");
    public void run() {        // I actually suggest that you not make this plugin run in its        // own thread. I'd like to move towards a caller-threaded approach        // i.e. the caller provides a thread to run the checkExtensions* methods        // and blocks until it returns (i.e. after the various URL's have been        // checked, or we are interrupted somehow)        _model.setRunning(true);    }