@Override
        public void run() {
            Log.v("AsyncMapWrapper: run Thread");
            lock.lock();
            try {
                if (!isDestroyed.get() && mapChangeRequested && processQueue()) {
                    // repaint successful, set flag to false
                    mapChangeRequested = false;
                }
            } finally {
                lock.unlock();
            }
        }
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