protected void handleResourceLoaded(Resource resource) { final ModelSet modelSet = (ModelSet) resource.getResourceSet(); StereotypeRepairService.startedRepairing(modelSet); boolean presented = false; try { ZombieStereotypesDescriptor zombies = getZombieStereotypes(resource); if ((zombies != null) && (presenter != null)) { presenter.addZombies(zombies); presenter.onPendingDone( new Runnable() { public void run() { StereotypeRepairService.finishedRepairing(modelSet); } }); } presented = (presenter != null) && presenter.isPending(); } finally { if (!presented) { StereotypeRepairService.finishedRepairing(modelSet); } } }