public void destroy() {
        isDestroyed.set(true);

        //delete all existing waiting commands
        commandLock.lock();
        try {
            changeCommandQueue.clear();
            commandExecutionRunRequested = false;
        } finally {
            commandLock.unlock();
        }
        lock.lock();
        try {
            //clear all existing requests to add/remove
            requestedToAdd.clear();
            requestedToRemove.clear();
            mapChangeProcessQueue.clear();
            mapChangeRequested = false;

            //execute a last action, a "destroy" request:
            changeExecutor.runMapChanges(() -> changeExecutor.destroy(objectMap.values()));

        } finally {
            lock.unlock();
        }
    }
removes ALL objects from this Set
main/src/main/java/cgeo/geocaching/utils/AsynchronousMapWrapper.java