### Question:
ExtractorModel extends FeatureModel implements Extractor, Recyclable { @Override public void stopExtraction() { state = ExtractorState.NONE; resourceType = null; for (int i = 0; i < listenable.size(); i++) { listenable.get(i).notifyStopped(); } } ExtractorModel(Services services, Setup setup); @Override void prepare(FeatureProvider provider); @Override void checkListener(Object listener); @Override void addListener(ExtractorListener listener); @Override void removeListener(ExtractorListener listener); @Override void setChecker(ExtractorChecker checker); @Override void update(double extrp); @Override void startExtraction(); @Override void stopExtraction(); @Override boolean isExtracting(); @Override void setResource(Extractable extractable); @Override void setResource(String type, Tiled tiled); @Override void setResource(String type, int tx, int ty, int tw, int th); @Override void setExtractionSpeed(double count); @Override void setDropOffSpeed(double count); @Override void setCapacity(int capacity); @Override int getExtractionCapacity(); @Override double getExtractionSpeed(); @Override double getDropOffSpeed(); @Override Tiled getResourceLocation(); @Override String getResourceType(); @Override void recycle();  }### Answer:
@Test void testStopExtraction() { final ObjectExtractor object = new ObjectExtractor(services, setup, true, true); object.addFeature(new TransformableModel(services, setup)); final Extractor extractor = new ExtractorModel(services, setup); extractor.prepare(object); extractor.setCapacity(6); extractor.setExtractionSpeed(50.0); extractor.setDropOffSpeed(100.0); final AtomicReference<String> goTo = new AtomicReference<>(); final AtomicReference<String> startExtract = new AtomicReference<>(); final AtomicReference<String> empty = new AtomicReference<>(); final AtomicReference<String> extracted = new AtomicReference<>(); extractor.addListener(UtilExtractable.createListener(goTo, startExtract, extracted, empty, empty, empty)); assertNull(extractor.getResourceLocation()); assertNull(extractor.getResourceType()); extractor.setResource("wood", 1, 2, 1, 1); extractor.startExtraction(); assertFalse(extractor.isExtracting()); assertEquals("wood", goTo.get()); extractor.update(1.0); assertTrue(extractor.isExtracting()); assertEquals("wood", startExtract.get()); assertNotEquals("wood", extracted.get()); extractor.stopExtraction(); extractor.update(1.0); assertFalse(extractor.isExtracting()); assertNotEquals("wood", extracted.get()); assertNull(goTo.get()); assertNull(startExtract.get()); assertNull(extracted.get()); assertNull(empty.get()); object.getFeature(Identifiable.class).notifyDestroyed(); }