V replace(int key, int hash, V newValue) {
      lock();
      try {
        HashEntry<V> e = getFirst(hash);
        while (e != null && (e.hash != hash || key != e.key)) {
          e = e.next;
        }

        V oldValue = null;
        if (e != null) {
          oldValue = e.value;
          e.value = newValue;
        }
        return oldValue;
      } finally {
        unlock();
      }
    }
Reads value field of an entry under lock. Called if value field ever appears to be null. This
is possible only if a compiler happens to reorder a HashEntry initialization with its table
assignment, which is legal under memory model but is not known to ever occur.
geode-core/src/main/java/org/apache/geode/internal/ObjIdConcurrentMap.java