private void removeSingle(final K key) {
        //make sure that any pending add requests for this object are removed
        requestedToAdd.remove(key);

        //we need to delete only if object currently exists
        if (objectMap.containsKey(key) && requestedToRemove.add(key)) {
            //only if there was no remove request yet we need to add a command to process queue
            mapChangeProcessQueue.add(new Pair<>(key, false));
        }
    }
replaces objects in this Map completely with given objects
<br>
Same effect could be reached by calling removeAll() followed by add(newObjects),
but performance is better when calling replace() method instead
main/src/main/java/cgeo/geocaching/utils/AsynchronousMapWrapper.java