code: public Entry<K,V> lookup(K key, int _hash, int _keyValue) {
      OptimisticLock[] _locks = locks;
      int si = _hash & LOCK_MASK;
      OptimisticLock l = _locks[si];
      long _stamp = l.tryOptimisticRead();
      Entry<K,V>[] tab = entries;
      if (tab == null) {
        throw new CacheClosedException(cache);
      }
      Entry<K,V> e;
      int n = tab.length;
      int _mask = n - 1;
      int idx = _hash & (_mask);
      e = tab[idx];
      while (e != null) {
        if (e.hashCode == _keyValue && keyObjIsEqual(key, e)) {
          return e;
        }
        e = e.another;
      }
      if (l.validate(_stamp)) {
        return null;
      }
      _stamp = l.readLock();
      try {
        tab = entries;
        if (tab == null) {
          throw new CacheClosedException(cache);
        }
        n = tab.length;
        _mask = n - 1;
        idx = _hash & (_mask);
        e = tab[idx];
        while (e != null) {
          if (e.hashCode == _keyValue && (keyObjIsEqual(key, e))) {
            return e;
          }
          e = e.another;
        }
        return null;
      } finally {
        l.unlockRead(_stamp);
      }
    }
docs: Lookup the entry in the hash table and return it. First tries an optimistic read.